Witam chciałem się zapytać czy może ktoś korzysta z pvmonitor i lan kontrolera ,który zbiera dane z produkcji i zużycia energii i wysyła w formie get na serwery pvmonitora. Czy można to jakoś spiąć jeszcze z Domoticzem
Sam lankontroler to jakiś zaprogramowany microkontroler wpięty w sieć lan.
Jak masz domoticz , to po co Ci do tego lankontroler , możesz wysłać dane na pvmonitor bezpośrednio z domoticza.
@marcingajda
wysyłkę na pvmonitor mam juz od 2lat ,a domoticzem zainteresowałem się dopiero teraz i tak się zacząłem zastanawiać czy można to jakoś ogarnąć.Możesz coś więcej na temat takiej wysyłki,
Problem w tym ,że ekspertem od domoticza nie jestem , no i też go już na codzień nie używam. Ale są tu specjaliści ,którym wystarczy jedno słowo 🙂
Ja wysyłam wszystkie rzeczy ( a w sumie są to dane z pompyciepła ,z pv a także ostatnio ładowanie samochodu PHEV) z Nodereda ( i z tm bardziej mogę pomóc) , bo tak mi jakoś było najłatwiej.
A trzeba wysłać GET w postaci:
gdzie fx1 ,fx2 .... to odpowiednie numery funkcji do znalezienia w opisach , a x1,x2... to wysyłane wartości , no i trzeba to wysyłać nie częściej niż 3 min....
@marcingajda
powiedzmy że mam już idl i hasło i chcę wysyłać parametr f104 http://dane.pvmonitor.pl/pv/get.php?idl=numerinstalacji&p=haslodopvmonitor&tm=yyyy-mm-ddThh:mm:ss&f104 jak mam to ustawić w domoticzu.Jak ustawić odpowiedni format czasu i przerwy miedzy wysyłka.Jak wysłać z pobór z dwóch PC.
Możesz jakiegoś screna zapodać
No właśnie to pytanie do mnie , bo domoticza kompletnie nie znam...
Więc może ktoś podpowie koledze jak wysłać takie coś w postaci GET w odstępach 3 minutowych , z aktualnie podstawioną datą , czasem i wartością ... f104=wartość wysłać...
Ja mogę pomóc ,jak te dane wysłać z Nodereda...
@rakon poczytaj wiki domoticz co jest wymagane do uruchomienia wtyczek pythona i sobie to ogarnij na tym https://github.com/kofec/domoticz-tinycontrol , albo jak chcesz to instaluj Node-Red i buduj przepływ do wirtualnych czujników w domoticz
@marcingajda
Ok, to aby wysłać z nodereda musze go pewnie jakoś skomunikować z domoticzem?
Mam jedno flow do obsługi asystenta google home z polaczeniem z domoticzem to by było coś podobnego?
No to jakoś nodereda z domoticzem zkomunikowałeś....
Ja używałem do tego mqtt i wtyczki mqtt. Domoticz wszysko wyluwał do topic domoticz/out , i nodered bez poblemu może to nasłuchiwać.
@marcingajda
Witam,pisałeś ze wysyłasz dane z domoticza na pvmonitor przez nodereda.
możesz mi pomoc z taka wysyłka tylko ze z HA.
Mam już , a raczej dopiero odczyt encji z parametrem który chce wyslać. Nie wiem jak utworzyć odpowiedni format daty i czasu i jak to skonfigurować w get entities.Możesz podać jakiś swój przykład jak masz to skonfigurowane.
@rakon ,
Mam np. coś takiego , wysyła 11 parametrów na raz.
[{"id":"cc5c799b623f64c6","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"11fff44e2e0b0909","type":"http request","z":"cc5c799b623f64c6","name":"","method":"GET","ret":"txt","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","credentials":{},"x":710,"y":180,"wires":[[]]},{"id":"f2e5f97f5af90d76","type":"join","z":"cc5c799b623f64c6","name":"join payloads","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"","joinerType":"str","accumulate":false,"timeout":"","count":"12","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":130,"y":180,"wires":[["c098fe58eed14805"]]},{"id":"c098fe58eed14805","type":"function","z":"cc5c799b623f64c6","name":"time and data adder","func":"var idl = \"123456\";\nvar password = \"123456\";\n\nvar OutTemp = Number(msg.payload[\"Lacrosse/Sensor-3f/Temp\"]);\nvar OutHum = Number(msg.payload[\"Lacrosse/Sensor-3f/Hum\"]);\nvar PC_Energy = Number(msg.payload[\"Licznik/Total_El_Act_Energy\"]);\nvar TempzPC = Number(msg.payload[\"panasonic_heat_pump/1wire/286d1479a21603d2\"]);\nvar TempdoPC = Number(msg.payload[\"panasonic_heat_pump/1wire/288de579a2160390\"]);\nvar Tempposkraplaczu = Number(msg.payload[\"panasonic_heat_pump/main/Inside_Pipe_Temp\"]);\nvar Tempposprezarce = Number(msg.payload[\"panasonic_heat_pump/main/Discharge_Temp\"]);\nvar DHW_Temp = Number(msg.payload[\"panasonic_heat_pump/main/DHW_Temp\"]);\nvar RoomTemperature = Number(msg.payload[\"RoomTemperature\"]);\nvar RekNawiew = Number(msg.payload[\"RekNawiew\"]);\nvar RekWyciag = Number(msg.payload[\"RekWyciag\"]);\n\n\n\n\ntime = new Date();\ntime = (time.getFullYear() + '-' + ('00' + (time.getMonth()+1)).slice(-2) + '-' + ('00' + time.getDate()).slice(-2) + 'T' + ('00' + time.getHours()).slice(-2) + ':' + ('00' + time.getMinutes()).slice(-2) + ':' + ('00' + time.getSeconds()).slice(-2));\n\nmsg.payload = ` http://dane.pvmonitor.pl/pv/get.php?idl=${idl}&p=${password}&tm=${time}&f10=${PC_Energy}&f11=${TempzPC}&f12=${TempdoPC}&f13=${Tempposkraplaczu}&f14=${Tempposprezarce}&f15=${RoomTemperature}&f16=${OutTemp}&f26=${OutHum}&f22=${DHW_Temp}&f37=${RekNawiew}&f42=${RekWyciag}`;\n\n return msg ;\n ","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":320,"y":180,"wires":[["d0d31c09d51d56a5"]]},{"id":"d0d31c09d51d56a5","type":"change","z":"cc5c799b623f64c6","name":"","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":180,"wires":[["11fff44e2e0b0909"]]}]
@mig41 pokazuje mi błąd składni przy funkcji, próbuje wysyłać z Node Red zintegrowanego z Home Assistant
Bo tam są moje dane , ktore trzeba dostowsować. Więc jakie błędy Ci pokazuje ?
@mig41 oczywiście dostosowałem do swoich danych, coś z częścią która generuje date i czas jest nie tak, bo po wywaleniu tej składni i wpisaniu ręcznie daty i godziny Node Red nie pokazuje błędów
Czyli ten fragment ?
time = new Date(); time = (time.getFullYear() + '-' + ('00' + (time.getMonth()+1)).slice(-2) + '-' + ('00' + time.getDate()).slice(-2) + 'T' + ('00' + time.getHours()).slice(-2) + ':' + ('00' + time.getMinutes()).slice(-2) + ':' + ('00' + time.getSeconds()).slice(-2));
Też mam NodeReda z HA , i to działa u mnie.
EDIT: A sam ten fragment powyżej w funkcji zwraca aktualny czas i datę ?
@mig41 w debug jest w sumie OK, natomiast jak jest ta część kodu odnośnie daty NodeRed przy funkcji zgłasza błąd, czerwony trójkącik, póki co niby przy odpowiedniej składni pvmonitor nic na razie nie rejestruje
responseUrl: "http://dane.pvmonitor.pl/pv/get.php?idl=111111&p=ooooooooo&tm=2023-02-28T16:28:06&f102=10800
Jak to jest cała odpowiedź , to na końcu nie brakuje apostrofu ?
Skąd ten tekst jest ?
@mig41 jest " tylko się nie skopiował 🙂 , niby nod http request odpowiada OK, no cóż poczekam może zacznie coś malować.
Możesz zerknąć, na mój cały przepływ, czy według Ciebie powinien działać, na razie testowo wymuszam puszczenie z jakąś tam wartością, ale oczywiście docelowo podłącze konkretny sensor, ale z tym to nie będzie problemu
[{"id":"48a0f60f42a5cfdc","type":"http request","z":"6429b127.3aba","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":770,"y":3180,"wires":[["be3d392a57846c98"]]},{"id":"1140f246bfd0a82a","type":"function","z":"6429b127.3aba","name":"time and data adder","func":"var idl = \"111111\";\nvar password = \"oooooooooo\";\n\nvar Energia = Number(msg.energia);\n\n\ntime = new Date();\ntime = (time.getFullYear() + '-' + ('00' + (time.getMonth() + 1)).slice(-2) + '-' + ('00' + time.getDate()).slice(-2) + 'T' + ('00' + time.getHours()).slice(-2) + ':' + ('00' + time.getMinutes()).slice(-2) + ':' + ('00' + time.getSeconds()).slice(-2));\n\nmsg.payload = ` http://dane.pvmonitor.pl/pv/get.php?idl=${idl}&p=${password}&tm=${time}&f102=${Energia}`;\n\n\n return msg;","outputs":1,"noerr":9,"initialize":"","finalize":"","libs":[],"x":380,"y":3180,"wires":[["d3460280f52e328a"]]},{"id":"d3460280f52e328a","type":"change","z":"6429b127.3aba","name":"","rules":[{"t":"set","p":"url","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":3180,"wires":[["48a0f60f42a5cfdc"]]},{"id":"c43876ce4e53fa82","type":"inject","z":"6429b127.3aba","name":"","props":[{"p":"payload"},{"p":"energia","v":"11300","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":3140,"wires":[["1140f246bfd0a82a"]]},{"id":"be3d392a57846c98","type":"debug","z":"6429b127.3aba","name":"debug 16","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1000,"y":3180,"wires":[]}]
Nie ,bo tym razem masz jedną spację za pierwszym cudzysłowiem ! 🙂
Usuń ją i będzie ok.
No i później zamień linię na :
var time = new Date();
wtedy zniknie błąd czerwonego trójkącika.