-
Innlegg
136 -
Ble med
-
Besøkte siden sist
-
Dager vunnet
6
deve87 sine prestasjoner
-
Den var veldig flott, men tenkte mer på å sende en kommando via hjemmeautomasjonen for å aktivere parametere direkte. Tidligere OpenZwave hadde mulighet for dette, men kan ikke finne dette i Z-Wave JS.
-
deve87 begynte å følge NGINX reversert proxy hjelp , Z-Wave JS - Fibaro RGBW animasjon , Badetemperaturer fra Badetassen inn i Domoticz? og 2 andre
-
Hei. Er det mulig og endre en Z-Wave node sine parametere via en slags API kommando for Z-Wave JS ? For eksempel starte Fibaro RGBW sine animasjonsprogrammer under parameter 72. Endrer jeg parameter 72 til eksempel 7, kjører den en tordenanimasjon, men stopper når den skrus av. Eller er det en annen måte å aktivere de forsjellige animasjonene på?
-
Laget like gjerne en plugin til domoticz ut av det. Opprett en ny mappen under domoticz-->plugins som heter eks badetassen Dermed, lagre innholdet i koden som "plugin.py", og legg filen i mappen Restart domoticz """ Altibox badetassen API Author: deve87, 2023 Version: 1.0: Initial Version """ """ <plugin key="Badetassen" name="Altibox badetassen API" author="deve87" version="1.0" wikilink="" externallink="https://prdl-apimgmt.lyse.no/apis/t/prod.altibox.lyse.no/temp/1.0/api/location"> <params> <param field="Address" label="API URL" width="400px" required="true" default="https://prdl-apimgmt.lyse.no/apis/t/prod.altibox.lyse.no/temp/1.0/api/location"/> <param field="Mode1" label="Authorization" width="400px" required="true" default="Bearer 9df43895-3d09-30d5-afe4-db2bf92a86f0"/> <param field="Mode2" label="Place 1" width="400px" required="true" default="Osebakkenstranda"/> <param field="Mode3" label="Place 2" width="400px" required="false" default=""/> <param field="Mode4" label="Place 3" width="400px" required="false" default=""/> <param field="Mode5" label="Update every x minutes" width="200px" required="true" default="60"/> <param field="Mode6" label="Debug" width="75px"> <options> <option label="False" value="Normal" default="False" /> <option label="True" value="Debug"/> </options> </param> </params> </plugin> """ import Domoticz import requests import time from datetime import datetime, timedelta class BasePlugin: heartbeatsInterval = 10 heartbeatsCount = 0 def __init__(self): self.debug = False self.error = False self.nextpoll = datetime.now() self.pollinterval = 60 return def onStart(self): Domoticz.Debug("onStart called") self.pollinterval = int(Parameters["Mode5"])*60 if Parameters["Mode6"] == 'Debug': self.debug = True Domoticz.Debugging(1) DumpConfigToLog() else: Domoticz.Debugging(0) if len(Parameters["Mode2"]) > 0: if 1 not in Devices: Domoticz.Device(Name=Parameters["Mode2"], Unit=1, TypeName="Temperature", Used=1).Create() Domoticz.Log(Parameters["Mode2"]+" created") if len(Parameters["Mode3"]) > 0: if 2 not in Devices: Domoticz.Device(Name=Parameters["Mode3"], Unit=2, TypeName="Temperature", Used=1).Create() Domoticz.Log(Parameters["Mode3"]+" created") if len(Parameters["Mode4"]) > 0: if 3 not in Devices: Domoticz.Device(Name=Parameters["Mode4"], Unit=3, TypeName="Temperature", Used=1).Create() Domoticz.Log(Parameters["Mode4"]+" created") self.checkAPI() Domoticz.Heartbeat(self.heartbeatsInterval) def onStop(self): Domoticz.Log("Plugin is stopping.") Domoticz.Debugging(0) def onHeartbeat(self): Domoticz.Debug("onHeartbeat called") self.heartbeatsCount = self.heartbeatsCount + 1 if self.pollinterval <= self.heartbeatsInterval * self.heartbeatsCount: self.heartbeatsCount = 0 self.checkAPI() def checkAPI(self): try: url = Parameters["Address"] headers = { 'accept': 'application/json', 'content-type': 'application/json', 'Authorization': Parameters["Mode1"] } response = requests.get(url, headers=headers) jsondata = response.json() lenght = len(jsondata) for i in range(lenght): if Parameters["Mode2"] in jsondata[i]["Name"]: temp = jsondata[i]["lastTemperature"] if 1 in Devices: Devices[1].Update(nValue=1, sValue=temp) if Parameters["Mode3"] in jsondata[i]["Name"]: temp = jsondata[i]["lastTemperature"] if 2 in Devices: Devices[2].Update(nValue=1, sValue=temp) if Parameters["Mode4"] in jsondata[i]["Name"]: temp = jsondata[i]["lastTemperature"] if 3 in Devices: Devices[3].Update(nValue=1, sValue=temp) except Exception as e: Domoticz.Log("Error message: "+str(e)) global _plugin _plugin = BasePlugin() def onStart(): global _plugin _plugin.onStart() def onStop(): global _plugin _plugin.onStop() def onHeartbeat(): global _plugin _plugin.onHeartbeat() # Generic helper functions def DumpConfigToLog(): for x in Parameters: if Parameters[x] != "": Domoticz.Debug( "'" + x + "':'" + str(Parameters[x]) + "'") Domoticz.Debug("Device count: " + str(len(Devices))) for x in Devices: Domoticz.Debug("Device: " + str(x) + " - " + str(Devices[x])) Domoticz.Debug("Device ID: '" + str(Devices[x].ID) + "'") Domoticz.Debug("Device Name: '" + Devices[x].Name + "'") Domoticz.Debug("Device nValue: " + str(Devices[x].nValue)) Domoticz.Debug("Device sValue: '" + Devices[x].sValue + "'") return Kun "Name" under "Product URL" linken vil fungere her.
-
Hei. Her har du en kode i python som gjør samme greiene. Du må opprette et dummypunkt i Domoticz, finne idx for dette punktet og endre det i linken under "idx= " Scriptet kan ikke kjøres direkte i Domoticz, men i bakgrunnen. Lag en ny fil og lim inn innholdet: eks Badetemperatur.py Kjøres slik i terminalen på RPI: python3 Badetemperatur.py & import requests import time #Endre stedsnavnet her Stedsnavn = "Osebakkenstranda" def api_data(): url = "https://prdl-apimgmt.lyse.no/apis/t/prod.altibox.lyse.no/temp/1.0/api/location" headers = { 'accept': 'application/json', 'content-type': 'application/json', 'Authorization': 'Bearer 9df43895-3d09-30d5-afe4-db2bf92a86f0' } try: response = requests.get(url, headers=headers) jsondata = response.json() lenght = len(jsondata) for i in range(lenght): if Stedsnavn in jsondata[i]["Name"]: temp = jsondata[i]["lastTemperature"] print("Badetemperaturen for "+Stedsnavn+": "+temp+"°C") #Endre idx= med IDX for punktet requests.post("http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx=565&nvalue=0&svalue="+temp) except Exception as e: print("Feilmelding: "+str(e)) while True: api_data() #Polling er satt til 1 time time.sleep(3600) Kjører du domoticz på en RPI, kan du få scriptet til å starte automatisk slik: sudo nano /etc/rc.local Legg linjen under i rc.local mellom fi og exit0 (endre stien hvis filen ikke er plassert i /home/pi mappen) fi (sleep 5;python3 /home/pi/Badetemperatur.py) & exit 0 Restart etterpå.
-
Satt sammen en Aidon HAN port leser til BACnetIP for de som er kjent med det. Hardware er Raspberry PI 3b Leser 2xHAN og kan lese 3xHAN med USB - M-Bus adapter. Er kodet i python sammen med eget program for software serial. Slik at GPIO også kan brukes. Monteres i skap og er ment for bygg og tilpasset målere med trafoer
-
Må ha CKOZ-00/14. CKOZ-00/13 er kun for programmering. CKOZ-00/14 må søkes opp å linkes sammen med andre enheter med CKOZ-00/13 I MRF
-
Lesing av AMS data (AMS/HAN -> IoT)
deve87 svarte på roarfred sitt emne i Strømsparing og strøm-overvåkning
Prøver å lage et python script for Kamstrup målere ved å redigere dette skriptet for Aidon målere. Måleren befinner seg i Rauma kommune (Rauma Energi). Stusser litt på data fra måler da det virker som det mangler noe på slutten og at data er feil. Benytter en Raspberry PI 3B med et slik adapter -
Lesing av AMS data (AMS/HAN -> IoT)
deve87 svarte på roarfred sitt emne i Strømsparing og strøm-overvåkning
Ingen? 😥 Raw data fra måler er: Got 136 bytes: 7E A0 E2 2B 21 13 23 9A E6 E7 00 0F 00 00 00 00 0C 07 E5 09 06 01 13 2F 28 FF 80 00 00 02 19 0A 0E 4B 61 6D 73 74 72 75 70 5F 56 30 30 30 31 09 06 01 01 00 00 05 FF 0A 10 35 37 30 36 35 36 37 32 39 35 34 32 39 35 39 33 09 06 01 01 60 01 01 FF 0A 12 36 38 34 31 31 32 31 42 4E 32 34 33 31 30 31 30 34 30 09 06 01 01 01 07 E0 06 00 E0 4B 7F FF 06 FE FF C7 09 86 F9 FF 12 C0 2F C8 50 50 B0 90 12 00 FC A9 17 7E Got 135 bytes: 7E A0 E2 2B 21 13 23 9A E6 E7 00 0F 00 00 00 00 0C 07 E5 09 06 01 13 2F 32 FF 80 00 00 02 19 0A 0E 4B 61 6D 73 74 72 75 70 5F 56 30 30 30 31 09 06 01 01 00 00 05 FF 0A 10 35 37 30 36 35 36 37 32 39 35 34 32 39 35 39 33 09 06 01 01 60 01 01 FF 0A 12 36 38 34 31 31 32 31 42 4E 32 34 33 31 30 31 30 34 30 09 06 01 01 01 07 E0 06 00 E0 4B 7F DF 06 FE C7 09 86 F9 FF 12 C0 2F C8 50 50 B0 90 12 00 FC 53 87 7E -
Lesing av AMS data (AMS/HAN -> IoT)
deve87 svarte på roarfred sitt emne i Strømsparing og strøm-overvåkning
Noen som har et skript for Kamstrup målere i python? -
Hei. Har en BEG KNX IP-interface som jeg skulle skiftet IP adresse på. Den har nå i dag 192.168.10.200 og skal få 192.168.23.200 Det er 2 timer unna, så på stedet står det en Windows XP maskin som jeg fikk installert ETS 4.0.6 på. Men var ikke veldig selvforklarende hva de neste stegende er 😄
-
Fant det ut. Subdomener skal lages som CNAME record også Da forsto nginx koblingen 😉
- 1 svar
-
- 2
-
Hei. Er ganske ferskt på dette området, men har klart å satt opp en NGINX reversert proxy som igjen viderekobler trafikken til en maskin. eksempeldomene.no -> nginx -> 192.168.10.204 (SSL) OK Hos domene selskapet jeg kjøpte eksempeldomene.no har jeg satt opp 2x A-record. @ eksempeldomene mot offentlig IP test.eksempeldomene.no mot offentlig IP I .conf filen for server i nginx har jeg lagt opp slik at test.eksempeldomene.no skal viderekobles til en annen server enn hva eksempeldomene.no gjør. Men begge kommer til den første serveren jeg har i oppsettet. Prøvd forskjellige oppsett jeg har funnet på nettet. Så begynner å lure på om jeg ikke helt forstår oppsettet i sonefilen for domenet jeg har kjøpt eller hva 😭
-
Fikk det til å fungere! Hadde skrevet "C:\veien\til\python\program.exe" Byttet jeg ut C:\ med %HOMEDRIVE% og samme med veien til skriptet. Testet aldri videre med .bat skriptet jeg lagde.
- 8 svar
-
- 2
-
Det rare er at det fungerte fint på en annen Windows server 2016. Så kjørte den noen Windows oppdateringer. Og dermed samme problem med den også.