Witam zastanawiam się czy jest możliwe odczyt z czujników w wiadomości tts przez głośnik w tablecie na ścianie, dodam ze od niedawna bawię sie node red i mam powiadomienia o pralce itp ale nie wiem jak zrobić powiadomienia z odczytu czujnika np temperatury czy ktoś może podpowiedzieć z góry dzięki
Musisz użyć tamplating np. wywołaj usługę z tym kodem, oczywiście podmień sensory na swoje:
data:
cache: true
media_player_entity_id: media_player.asus
message: >-
Dzień dobry, temperatura na zewnątrz obecnie to {{
states('sensor.temp_zewnetrzna_temperature') }} stopni, a wilgotność {{
states('sensor.temp_zewnetrzna_humidity') }} procent. Życzę miłego dnia.
target:
entity_id: tts.google_pl_pl
może wytłumaczę w ten sposób, mam powiadomienie o simieciach zrobione w ten sposób a jak zrobić żeby była o godzinie 9 np informacja z sensora temperatury
[{“id”:“60f379.e730dc88”,“type”:“tab”,“label”:“Status poranny”,“disabled”:false,“info”:""},{“id”:“4bb43be0d159915e”,“type”:“api-call-service”,“z”:“60f379.e730dc88”,“name”:"",“server”:“67173d8b.9c2234”,“version”:5,“debugenabled”:false,“domain”:“notify”,“service”:“mobile_app_sm_t500”,“areaId”:[],“deviceId”:[],“entityId”:[],“data”:"",“dataType”:“jsonata”,“mergeContext”:"",“mustacheAltTags”:false,“outputProperties”:[],“queue”:“none”,“x”:1520,“y”:200,“wires”:[[]]},{“id”:“33fa12f16ab95fe7”,“type”:“function”,“z”:“60f379.e730dc88”,“name”:“Wiadomość”,“func”:“msg.payload =\n{\n “data”:\n {\n “message”: “TTS”,\n “data”:\n {\n “tts_text”: “Przypomnienie! jutro planowany odbiór śmieci zmieszanych, przygotuj je do wyniesienia.”,\n “priority”: “high”,\n “ttl”: 0,\n }\n }\n}\nreturn msg;”,“outputs”:1,“noerr”:0,“initialize”:"",“finalize”:"",“libs”:[],“x”:1110,“y”:200,“wires”:[[“4bb43be0d159915e”]]},{“id”:“25a250030c8d3882”,“type”:“api-current-state”,“z”:“60f379.e730dc88”,“name”:"",“server”:“67173d8b.9c2234”,“version”:3,“outputs”:2,“halt_if”:“tomorrow”,“halt_if_type”:“str”,“halt_if_compare”:“is”,“entity_id”:“sensor.zmieszane”,“state_type”:“str”,“blockInputOverrides”:false,“outputProperties”:[{“property”:“payload”,“propertyType”:“msg”,“value”:"",“valueType”:“entityState”},{“property”:“data”,“propertyType”:“msg”,“value”:"",“valueType”:“entity”}],“for”:“0”,“forType”:“num”,“forUnits”:“minutes”,“override_topic”:false,“state_location”:“payload”,“override_payload”:“msg”,“entity_location”:“data”,“override_data”:“msg”,“x”:490,“y”:200,“wires”:[[“dfdde496efed40b9”],[]]},{“id”:“48e7596b362ae631”,“type”:“inject”,“z”:“60f379.e730dc88”,“name”:“9:00”,“props”:[{“p”:“payload”},{“p”:“topic”,“vt”:“str”}],“repeat”:"",“crontab”:“00 09 * * *”,“once”:false,“onceDelay”:0.1,“topic”:"",“payload”:"",“payloadType”:“date”,“x”:130,“y”:200,“wires”:[[“25a250030c8d3882”]]},{“id”:“dfdde496efed40b9”,“type”:“switch”,“z”:“60f379.e730dc88”,“name”:"",“property”:“payload”,“propertyType”:“msg”,“rules”:[{“t”:“eq”,“v”:“tomorrow”,“vt”:“str”}],“checkall”:“true”,“repair”:false,“outputs”:1,“x”:810,“y”:200,“wires”:[[“33fa12f16ab95fe7”]]},{“id”:“67173d8b.9c2234”,“type”:“server”,“name”:“Home Assistant”,“addon”:true}]
W node-red nie wiem jak to zrobić, używam go do innych celów. Ale nie wiem czemu chcesz robić to w NR jak łatwiej będzie zrobić prostą automatyzację w HA jako wyzwalacz dasz czas, jako akcję:
data:
cache: true
media_player_entity_id: media_player.asus
message: "Dzień dobry, temperatura na zewnątrz obecnie to {{ states('sensor.temp_zewnetrzna_temperature') }} stopni"
target:
entity_id: tts.google_pl_pl
Tak samo jak zrobiłeś te śmieci. Na przyszłość sprawdzaj kod przed wklejeniem, ten wstawiony jest z błędem, ale widać że korzystasz z poradnika Artura o statusie porannym, więc w czym masz problem?
Przykład dla jednego czujnika
flows.json (3,0 KB)
Bardzo ci dziękuje za pomoc
Proszę nie proś o pomoc w prywatnych wiadomościach, bo nikt oprócz Ciebie z takiej pomocy nie skorzysta, a nie taka jest idea forum.
Masz problem, to pisz o nim, nikt nie jest doskonały, i wszyscy kiedyś zaczynają. To nie wstyd pytać, nawet o podstawy.
Masz tu przykład dla dwóch czujników, trzeci trzeba dodać analogicznie. Nic trudnego.
flows (2).json (4,0 KB)
Udało mi się zrobić to co chciałem ale oczywiście brakuje mi odczytu godziny i daty z czego można to odczytać donem, musi być integracja z kalendarzem google do daty?
Ta funkcja na początku od Artura nie chce mi działać czytam na forum i nie wiem o co chodzi
Tutaj masz noda funkcji dla aktualnej godziny i daty:
const teraz = new Date();
const dni_tygodnia = ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"];
const miesiace = ["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca",
"sierpnia","września","października","listopada","grudnia"];
const godziny = ["północ", "pierwsza","druga","trzecia", "czwarta","piąta",
"szósta", "siódma", "ósma", "dziewiąta", "dziesiąta", "jedenasta",
"dwunasta", "trzynasta", "czternasta","piętnasta", "szesnasta",
"siedemnasta", "osiemstansta", "dziewiętnasta", "dwudziesta",
"dwudziestapierwsza", "dwudziestadruga", "dwudziestatrzecia"];
const dzien_slow = ["zerowy","pierwszy", "drugi","trzeci", "czwarty", "piąty", "szósty",
"siódmy", "ósmy", "dziewiąty", "dziesiąty", "jedynasty",
"dwunasty", "trzynasty", "czternasty", "piętnasty", "szesnasty",
"siedemnasty", "osiemnasty", "dziewiętnasty", "dwudziesty",
"dwudziestypierwszy", "dwudziestydrugi", "dwudziestytrzeci",
"dwudziestyczwarty", "dwudzistypiąty", "dwudziestyszósty",
"dwudziestysiódmy", "dwudziestyósmy", "dwudziestydziewiąty",
"trzydziesty", "trzydziestypierwszy"];
msg.akt_godzina = `${ godziny[teraz.getHours()] }`;
msg.minuty = teraz.getMinutes();
msg.dzien_tygodnia = `${ dni_tygodnia[teraz.getDay()] }`;
msg.dzien_miesiaca = `${ dzien_slow[teraz.getDate()] }`;
msg.miesiac = `${ miesiace[teraz.getMonth()] }`
msg. teraz = teraz
msg.wiadomosc ="Witaj. Jest godzina "+msg.akt_godzina+" "+msg.minuty+ ". Dzisiaj jest "+msg.dzien_tygodnia+". "+msg.dzien_miesiaca+" "+msg.miesiac+" . " ;
return msg;
o to chodziło?
No właśnie nie chce mi to działać nie wiem dla czego
Pokaż pełny debug na wyjściu to zobaczymy co nie działa
[{“id”:“40121b2ae9e5389d”,“type”:“tab”,“label”:“status poranny”,“disabled”:false,“info”:"",“env”:[]},{“id”:“2e6451e63b84dde7”,“type”:“inject”,“z”:“40121b2ae9e5389d”,“name”:“9 rano”,“props”:[{“p”:“payload”},{“p”:“topic”,“vt”:“str”}],“repeat”:"",“crontab”:“05 09 * * *”,“once”:true,“onceDelay”:0.1,“topic”:"",“payload”:"",“payloadType”:“date”,“x”:180,“y”:180,“wires”:[[“1d647f608f75f49c”]]},{“id”:“2869fb69d247a6c9”,“type”:“api-current-state”,“z”:“40121b2ae9e5389d”,“name”:“pogoda za oknem”,“server”:“1a9033b6.071e8c”,“version”:3,“outputs”:1,“halt_if”:"",“halt_if_type”:“str”,“halt_if_compare”:“is”,“entity_id”:“sensor.openweathermap_temperature”,“state_type”:“str”,“blockInputOverrides”:false,“outputProperties”:[{“property”:“payload”,“propertyType”:“msg”,“value”:"",“valueType”:“entityState”},{“property”:“data”,“propertyType”:“msg”,“value”:"",“valueType”:“entity”}],“for”:0,“forType”:“num”,“forUnits”:“minutes”,“x”:570,“y”:180,“wires”:[[“11b9a25e3a22a14e”]]},{“id”:“2c29e6929f7fc199”,“type”:“function”,“z”:“40121b2ae9e5389d”,“name”:“Temperatura +”,“func”:“msg.temp = Math.round(msg.payload);\nmsg.wiadomosc = “Temperatura za oknem wynosi “+msg.temp+” stopni celsjusza.”;\nreturn msg;”,“outputs”:1,“noerr”:0,“initialize”:"",“finalize”:"",“libs”:[],“x”:920,“y”:160,“wires”:[[“4a3e36c6e4f46cb3”]]},{“id”:“81c0c526ea8bbff4”,“type”:“function”,“z”:“40121b2ae9e5389d”,“name”:“Pełna wiadomość”,“func”:“msg.payload =\n{\n “data”:\n {\n “message”: “TTS”,\n “data”:\n {\n “ttl”: 0,\n “priority”: “high”,\n //“media_stream”: “alarm_stream_max”,\n “tts_text”: msg.wiadomosc,\n }\n }\n}\nreturn msg;\n”,“outputs”:1,“noerr”:0,“initialize”:"",“finalize”:"",“libs”:[],“x”:1210,“y”:280,“wires”:[[“15bcc5cd385feca3”,“0a93147006cbbaf4”]]},{“id”:“0a93147006cbbaf4”,“type”:“api-call-service”,“z”:“40121b2ae9e5389d”,“name”:“Tablet”,“server”:“1a9033b6.071e8c”,“version”:5,“debugenabled”:false,“domain”:“notify”,“service”:“mobile_app_sm_t500”,“areaId”:[],“deviceId”:[],“entityId”:[],“data”:"",“dataType”:“json”,“mergeContext”:"",“mustacheAltTags”:false,“outputProperties”:[],“queue”:“none”,“x”:1490,“y”:280,“wires”:[[]]},{“id”:“88537868c8e16ef1”,“type”:“function”,“z”:“40121b2ae9e5389d”,“name”:“Temperatura -”,“func”:“msg.temp = Math.round(msg.payload);\nmsg.wiadomosc = “Temperatura za oknem wynosi minus “+msg.temp+” stopni celsjusza.”;\nreturn msg;”,“outputs”:1,“noerr”:0,“initialize”:"",“finalize”:"",“libs”:[],“x”:920,“y”:200,“wires”:[[“4a3e36c6e4f46cb3”]]},{“id”:“11b9a25e3a22a14e”,“type”:“switch”,“z”:“40121b2ae9e5389d”,“name”:"",“property”:“payload”,“propertyType”:“msg”,“rules”:[{“t”:“gte”,“v”:“0”,“vt”:“num”},{“t”:“lt”,“v”:“0”,“vt”:“num”}],“checkall”:“true”,“repair”:false,“outputs”:2,“x”:750,“y”:180,“wires”:[[“2c29e6929f7fc199”],[“88537868c8e16ef1”]]},{“id”:“134e4701e772b218”,“type”:“function”,“z”:“40121b2ae9e5389d”,“name”:“Temperatura”,“func”:“msg.temperatura = Math.round(msg.payload);\nmsg.wiadomosc = msg.wiadomosc+\n “prędkość wiatru to około “+msg.temperatura+” kilometrów na godzine.”;\nreturn msg;”,“outputs”:1,“noerr”:0,“initialize”:"",“finalize”:"",“libs”:[],“x”:490,“y”:280,“wires”:[[“04eb2fb42bf5c6c5”]]},{“id”:“4a3e36c6e4f46cb3”,“type”:“api-current-state”,“z”:“40121b2ae9e5389d”,“name”:“predkość wiatru”,“server”:“1a9033b6.071e8c”,“version”:3,“outputs”:1,“halt_if”:"",“halt_if_type”:“str”,“halt_if_compare”:“is”,“entity_id”:“sensor.openweathermap_wind_speed”,“state_type”:“str”,“blockInputOverrides”:false,“outputProperties”:[{“property”:“payload”,“propertyType”:“msg”,“value”:"",“valueType”:“entityState”},{“property”:“data”,“propertyType”:“msg”,“value”:"",“valueType”:“entity”}],“for”:“0”,“forType”:“num”,“forUnits”:“minutes”,“override_topic”:false,“state_location”:“payload”,“override_payload”:“msg”,“entity_location”:“data”,“override_data”:“msg”,“x”:1160,“y”:180,“wires”:[[“134e4701e772b218”]]},{“id”:“04eb2fb42bf5c6c5”,“type”:“api-current-state”,“z”:“40121b2ae9e5389d”,“name”:“wilgotnosc”,“server”:“1a9033b6.071e8c”,“version”:3,“outputs”:1,“halt_if”:"",“halt_if_type”:“str”,“halt_if_compare”:“is”,“entity_id”:“sensor.openweathermap_humidity”,“state_type”:“str”,“blockInputOverrides”:false,“outputProperties”:[{“property”:“payload”,“propertyType”:“msg”,“value”:"",“valueType”:“entityState”},{“property”:“data”,“propertyType”:“msg”,“value”:"",“valueType”:“entity”}],“for”:“0”,“forType”:“num”,“forUnits”:“minutes”,“override_topic”:false,“state_location”:“payload”,“override_payload”:“msg”,“entity_location”:“data”,“override_data”:“msg”,“x”:710,“y”:280,“wires”:[[“e5517f4be1db15c6”]]},{“id”:“e5517f4be1db15c6”,“type”:“function”,“z”:“40121b2ae9e5389d”,“name”:“Temperatura”,“func”:“msg.temperatura = Math.round(msg.payload);\nmsg.wiadomosc = msg.wiadomosc+\n “wilgotność powietrza to “+msg.temperatura+” procent.”;\nreturn msg;”,“outputs”:1,“noerr”:0,“initialize”:"",“finalize”:"",“libs”:[],“x”:910,“y”:280,“wires”:[[“81c0c526ea8bbff4”]]},{“id”:“1d647f608f75f49c”,“type”:“function”,“z”:“40121b2ae9e5389d”,“name”:“data”,“func”:“const teraz = new Date();\nconst dni_tygodnia = [“niedziela”, “poniedziałek”, “wtorek”, “środa”, “czwartek”, “piątek”, “sobota”];\n\nconst miesiace = [“stycznia”,“lutego”,“marca”,“kwietnia”,“maja”,“czerwca”,“lipca”,\n “sierpnia”,“września”,“października”,“listopada”,“grudnia”];\n \nconst godziny = [“północ”, “pierwsza”,“druga”,“trzecia”, “czwarta”,“piąta”, \n “szósta”, “siódma”, “ósma”, “dziewiąta”, “dziesiąta”, “jedenasta”, \n “dwunasta”, “trzynasta”, “czternasta”,“piętnasta”, “szesnasta”, \n “siedemnasta”, “osiemstansta”, “dziewiętnasta”, “dwudziesta”, \n “dwudziestapierwsza”, “dwudziestadruga”, “dwudziestatrzecia”];\n \nconst dzien_slow = [“zerowy”,“pierwszy”, “drugi”,“trzeci”, “czwarty”, “piąty”, “szósty”, \n “siódmy”, “ósmy”, “dziewiąty”, “dziesiąty”, “jedynasty”, \n “dwunasty”, “trzynasty”, “czternasty”, “piętnasty”, “szesnasty”, \n “siedemnasty”, “osiemnasty”, “dziewiętnasty”, “dwudziesty”, \n “dwudziestypierwszy”, “dwudziestydrugi”, “dwudziestytrzeci”, \n “dwudziestyczwarty”, “dwudzistypiąty”, “dwudziestyszósty”, \n “dwudziestysiódmy”, “dwudziestyósmy”, “dwudziestydziewiąty”, \n “trzydziesty”, “trzydziestypierwszy”];\n\nmsg.akt_godzina = ${ godziny[teraz.getHours()] }
;\nmsg.minuty = teraz.getMinutes();\n\nmsg.dzien_tygodnia = ${ dni_tygodnia[teraz.getDay()] }
;\nmsg.dzien_miesiaca = ${ dzien_slow[teraz.getDate()] }
;\nmsg.miesiac = ${ miesiace[teraz.getMonth()] }
\nmsg. teraz = teraz\nmsg.wiadomosc =“Witaj. Jest godzina “+msg.akt_godzina+” “+msg.minuty+ “. Dzisiaj jest “+msg.dzien_tygodnia+”. “+msg.dzien_miesiaca+” “+msg.miesiac+” . " ;\nreturn msg;\n”,“outputs”:1,“noerr”:0,“initialize”:””,“finalize”:”",“libs”:[],“x”:370,“y”:180,“wires”:[[“2869fb69d247a6c9”]]},{“id”:“15bcc5cd385feca3”,“type”:“debug”,“z”:“40121b2ae9e5389d”,“name”:“debug 23”,“active”:true,“tosidebar”:true,“console”:false,“tostatus”:false,“complete”:“false”,“statusVal”:"",“statusType”:“auto”,“x”:1480,“y”:160,“wires”:[]},{“id”:“1a9033b6.071e8c”,“type”:“server”,“name”:“Home Assistant”,“addon”:true,“rejectUnauthorizedCerts”:true,“ha_boolean”:"",“connectionDelay”:false,“cacheJson”:false,“heartbeat”:false,“heartbeatInterval”:"",“statusSeparator”:"",“enableGlobalContextStore”:false}]
podłacz noda debug
zmień na complete msg object
i po uruchomieniu procesu pokaż co się pojawiło po prawej w debug’u
no ale rozwiń chłopie po prawej tego debuga, mam zgadywać co tam jest?
Ja spróbuje @bartik22 Twoja funkcja działa, ale pewnie po drodze gdzieś to nadpisał.
Lepiej niech pokaże zawartość pozostałych funkcji.
Zapewne nawet nie wpisał zmiennej w treści wiadomosci w ostatniej funkcji
ale po kolei…
co masz w “temperatura ±”