Willkommen › Foren › LogoControl › Werte von 1-Wire Sensor in Logocontrolseite schreiben
- Dieses Thema hat 11 Antworten sowie 3 Stimmen und wurde zuletzt vor vor 9 Jahren, 5 Monaten von admin aktualisiert.
-
AutorBeiträge
-
20. Juni 2015 um 16:53 #2092lounsomeTeilnehmer
Hallo, das System ist echt klasse!
Ich würde aber gerne noch meinen Sensor auf der Logocontrol-Seite anzeigen,
wie könnte ich das anstellen.
Bis jetzt schreibe ich den Wert einfach in einen .txt-File.!/usr/bin/python -O import time # Create a unique timestamp for inclusion in the log... timestamp = time.strftime("%d-%m-%Y %H:%M:%S") # append the filename with the date (this will start a new log daily)... logname = time.strftime("%d-%m-%Y") filename = "".join(["WW_Speicher_Temperatur_", logname, ".txt"]) # If already created, this will open the current log file, if not it will create a new one... datafile = open(filename, "a") # open the sensor log file as seen in the tutuorial (replacing 28-000003f1cede with the number of your sensor)... tfile = open("/sys/bus/w1/devices/28-04146acb1aff/w1_slave") # read the data and close the file... text = tfile.read() tfile.close() # Split the data and extract the temperature value... temperature_data = text.split()[-1] temperature = float(temperature_data[2:]) temperature = temperature / 1000 # write our newly formatted date, time and sensor value to our log file... datafile.write(timestamp + "," + str(temperature) + ",\n") datafile.close() print ("Datei mit Namen: " + filename + " erstellt" + ",\n") print (" Datum Zeit Temperatur") print ("WW_Speicher: " + timestamp + ", " + str(temperature) + ",\n")
22. Juni 2015 um 12:22 #2094adminAdministratorHi,
du könntest die Temperatur einfach von deinem Script aus über ein LogoControl-Attribut (Datentyp Word) in den VM der Logo schreiben. Dann hättest du das Attribut zum Einen in der Weboberfläche und zum Anderen sogar die Temperatur im Logo-Schaltprogramm zur Verfügung (für was auch immer das gut ist, vielleicht Rollo-Sonnenschutz wenn Außentemperatur um 10 Uhr größer 25°C ?!).
Das Schreiben eines Attribut geht über einen einfachen HTTP-Get:
http://logocontrol:8088/rest/devices/{deviceId}/attributes/{attributeId}/value?set={newValue}Mit Gain+Offset-Einstellung für das Attribut kannst du auch die Konvertierung vom Gleitkommawert in eine Ganzzahl durchführen.
22. Juni 2015 um 16:12 #2095lounsomeTeilnehmerDas hört sich sehr gut an, könntest du mir das vielleicht noch ein bisschen genauer erklären?
Was muss ich auf der LOGO-Seite einrichten?
Meine Werte lege ich zur Zeit mittels Python-Script alle 10min. in eine .txt-Datei ab, wie muss ich
diese abändern damit ich die Werte in die LOGO übertragen kann?Danke schon mal für die Hilfestellung.
22. Juni 2015 um 18:45 #2096AndycodeGastJa das hört sich gut an einen 1Wire Sensor mit dem Raspberry auslesen
und den Wert dann in der Logo auch noch Verwenden zu können 🙂Wer auch an einer Lösung Interessiert,
nur Leider sind meine Kenntnisse nicht so gut das ich so ein Script Schreiben kann.22. Juni 2015 um 20:03 #2097lounsomeTeilnehmerVor allem „günstiger“ als Analogeingangskarten und PT100 Fühler.
Bei mir sind es sollte ich irgend wann mal fertig werden, so um die 35-40Stk.22. Juni 2015 um 22:37 #2098AndycodeGastAso ja vor allem günstige^^
Darf ich erfahren was du damit machen willst also mit deinen 35-40 Fühler.
Ich nutze Logocontrol auch dazu um meine Logo Ausgänge zu erweitern funktioniert prima 🙂
23. Juni 2015 um 7:43 #2099lounsomeTeilnehmerSämtliche Raumtemperaturen Keller bis OG (18 Räume) + Aussentemp. +
Heizung + alle Rückläufe der FBH (wird dann warscheinlich die 40Stk. überschreiten)23. Juni 2015 um 10:04 #2100adminAdministratorAlso im Logo-Schaltprogramm musst du nichts ändern, solange du den Wert nicht auch im Schaltprogramm verwenden willst. Du musst dir lediglich ein „word“ im Speicher des Logo-VM aussuchen, dass noch nicht verwendet wird. Analogwerte sind in der Logo vom Datentyp „word“, also 2 Bytes lang, wenn du dich somit z.B. für VB100 entscheidest sind sowohl das Byte 100 als auch Byte 101 belegt.
In LogoControl legst du dir dafür ein Device mit einem Attribut an:
<device id="1" name="Temperatur"> <attribute id="1" name="temp" address="100" datatype="word" offset="0" gain="0.1" /> </device>
Zu Beachten ist der Gain von 0.1. Ich gehe jetzt einfach mal davon aus, dass dir eine Nachkommastelle bei der Temperatur reicht. Die Logo kann nur Ganzzahlige Werte, daher muss LogoControl eine Temperatur von 22.4 zuerst in 224 konvertieren bevor es in den VM-Speicher geschrieben wird. Der Gain ist eigentlich für die Visualisierung von (ganzzahligen) Analogwerten aus der Logo gedacht und macht aus der (224 * gain) eben die 22.4. Beim Schreiben von Analogwerten in die Logo rechnet LogoControl aber den umgekehrten Weg, also (22.4 / gain).
Durch einen einfachen HTTP-GET-Aufruf von
http://logocontrol:8088/rest/devices/1/attributes/1/value?set=22.4
schreibst du nun den Wert 22.4 in das oben definierte Attribut und damit auch an Adresse VB100 (und 101, da 2 Bytes lang) der Logo.Wie du den HTTP-GET nun in dein Python-Script einbaust, musst du selber schauen. Ich hatte bisher mit Python nichts zu tun. Hier evtl. ein Ansatzpunkt:
http://stackoverflow.com/questions/645312/what-is-the-quickest-way-to-http-get-in-pythonUm nun die Temperatur auch im Logo-Schaltprogramm nutzen zu können musst du lediglich einen analogen Netzwerkeingang hinzufügen und dort die VM-Adresse 100 einstellen. Anschließend kannst du den Analogwert mit sämtlichen Analogbausteinen (Analogverstärker, Schwellwertschalter usw.) verschalten.
23. Juni 2015 um 20:56 #2101lounsomeTeilnehmerPerfekt!
Ich poste morgen mal mein Python-Script etc.Danke
23. Juni 2015 um 21:54 #2103AndycodeGastIch hab es jetzt endlich geschafft ein Python Script zu Schreiben,
Das das ermöglicht 🙂Wen man das Python Script aufruft wird der Sensor ausgelesen
und Der Wert an Logocontrol gesendet.Hier mal der Code:
import urllib # open the sensor log file as seen in the tutuorial (replacing 28-0000068aa433 with the number of your sensor)... tfile = open("/sys/bus/w1/devices/28-04146acb1aff/w1_slave") # read the data and close the file... text = tfile.read() tfile.close() # Split the data and extract the temperature value... temperature_data = text.split()[-1] temperature = float(temperature_data[2:]) temperature = temperature / 1000 url = ("http://logocontrol:8088/rest/devices/1/attributes/1/value?set=" + str(temperature) + "") content = urllib.urlopen(url).read()
Ich führ dann die Python Datei alle 5 Sekunden automatisch aus und es läuft perfekt 😛
24. Juni 2015 um 9:21 #2121lounsomeTeilnehmerHabs so ziemlich genau so gelöst.
Noch eine doofe Frage: was muss ich in der Logo ändern damit der Befehl<attribute id="1" name="Status" address="200.0" datatype="bit"> <valuetext value="1" text="ein" /> <valuetext value="0" text="aus" /> </attribute>
ein oder aus meldet?
Wie kann ich z.B. Ausgang Q7 and die Adresse 200.0 schicken?
Ich krieg das irgendwie nicht gebacken.Hat sich erledigt, es gibt da eine Zuordnungstabelle:
Tabelle24. Juni 2015 um 10:27 #2130adminAdministratorJep, die Tabelle gibt es übrigens auch hier:
Konfiguration (dort den Kasten „VM Adressen für Ein-/Ausgänge/Merker der LOGO 0baX“ aufklappen)Dein Q7 liegt also bei der 0ba7 auf 942.6 und bei der 0ba8 auf 1064.6
-
AutorBeiträge
- Du musst angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.