NEWS
Aussentemperatur Wetterstation WS980Wifi in iobroker
-
@pascal-bay ich denke mal dass das eigentlich mit der Angabe negativer Werte von min passieren sollte.
Etwas anderes passendes als "Zahl" bei Typ gibt es IMHO nicht.Aber meine Vermutung ist, dass deine CuxD Anbindung da schief läuft.
-
@homoran Danke, ich gehe auch davon aus. Der Wert in der Wetterstation stimmt. (Eigene App) Ich denke auch, da ist etwas falsch in CuxD sobald der wert negativ wird. Wo kann ich das sehen?
-
@pascal-bay Wer fragt denn die Wetterstation ab? Da ist statt eines INT ein WORD oder U_INT genutzt worden.
-
@pascal-bay sagte: etwas falsch in CuxD
Der Fehler liegt wohl eher in der Datei weather.tcl, denn sie wird von CUxD ausgeführt.
-
@paul53 Die habe ich auch schon gesucht.
-
@pascal-bay sagte: /usr/local/addons/weather/weather.tcl
Wenn die Zeile vor "return $zahl" bei dir fehlt, dann füge sie ein.
# - liest ein Word vom Binärstring liefert Zahl von -32768 bis 32768 proc getw {idx} { global global_binout set sb [string index $global_binout $idx] scan $sb %c asciih set idx [expr $idx + 1] set sb [string index $global_binout $idx] scan $sb %c asciil set zahl [expr $asciil + { $asciih * 256}] if {$zahl > 32767} then {set zahl ~[expr 65535 - $zahl]} return $zahl }
-
@paul53 said in Aussentemperatur Wetterstation WS980Wifi in iobroker:
if {$zahl > 32767} then {set zahl ~[expr 65535 - $zahl]}
Vielen Dank! Bei mir sieht das so aus? Ein Tip, was ich ändern kann? Danke!
-
@pascal-bay sagte in Aussentemperatur Wetterstation WS980Wifi in iobroker:
Ein Tip, was ich ändern kann?
@paul53 sagte in Aussentemperatur Wetterstation WS980Wifi in iobroker:
Wenn die Zeile vor "return $zahl" bei dir fehlt, dann füge sie ein.
das ist
if {$zahl > 32767} then {set zahl ~[expr 65535 - $zahl]}
-
@pascal-bay sagte: Bei mir sieht das so aus?
Das ist die falsche Prozedur. Die richtige ist getw{idx}.
EDIT: Woher ist deine "weather.tcl"? Die TCL-Datei aus "weatherV2b.zip" sieht anders aus. Anfang:
#!/bin/tclsh load tclrega.so # - hier nur die IP Addresse anpassen set debug_mode 0 set wait_between_status_requests 1 set connection_timeout 500 set wait_between_retries 200 set status_retries 5 set command_retries 10 set matchport_host 192.168.0.129 set matchport_port 45000 # - liest ein Byte vom Binärstring - liefert Zahl von 0 - 255 proc getb {idx} { global global_binout set sb [string index $global_binout $idx] scan $sb %c ascii return $ascii } # - liest ein Word vom Binärstring liefert Zahl von -32768 bis 32768 proc getw {idx} { global global_binout set sb [string index $global_binout $idx] scan $sb %c asciih set idx [expr $idx + 1] set sb [string index $global_binout $idx] scan $sb %c asciil set zahl [expr $asciil + { $asciih * 256}] if {$zahl > 32767} then {set zahl ~[expr 65535 - $zahl]} return $zahl } # - liest ein Longword vom Binärstring und liefert Zahl von 0 - 4294967295 proc getl {idx} { global global_binout set sb [string index $global_binout $idx] scan $sb %c ascii3 set idx [expr $idx + 1] set sb [string index $global_binout $idx] scan $sb %c ascii2 set idx [expr $idx + 1] set sb [string index $global_binout $idx] scan $sb %c ascii1 set idx [expr $idx + 1] set sb [string index $global_binout $idx] scan $sb %c ascii0 set zahl [expr $ascii0 + {$ascii1 * 256} + {$ascii2 * 65536} + {$ascii3 * 16777216}] return $zahl }
-
@paul53 Einmal mehr Danke. Ich habe die weather.tcl aus WS980WiFiV2a also noch 2b. Es scheint aber, dass die Zeile da ist. Anbei der richtige Auszug getw{idx}.
-
@pascal-bay sagte: Auszug getw{idx}.
Dann sollten negative Werte geliefert werden, denn aufgerufen wird die Prozedur für die Außentemperatur so:
set atemp [expr double([getw 10]) / 10]
-
@paul53 Danke. Sehe ich das richtig, dann ist mein getw{idx} richtig? Der Fehler muss also woanders liegen?
-
@pascal-bay sagte: Der Fehler muss also woanders liegen?
Sieht so aus.
Hast du die TCL-Datei ausgetauscht? Oben ist die globale Variableanswer
und im letzten Post ist sieglobal_binout
. -
Du hast recht ich habe zwei TCL Dateien auf meinem Rechner. Ich gehe aber davon aus, dass die global_binout am laufen ist, denn alle anderen Werte werden korrekt in die Variablen gespeichert. Soll ich trotzdem versuchen mal die global_binout zu laden. Habe etwas Angst, dass dann der Rest auch nicht mehr läuft Klar wäre es super toll wenn ich das hin bekommen würde..... Danke für die Hilfe.
-
@pascal-bay sagte: habe zwei TCL Dateien
Aber nicht als /usr/local/addons/weather/weather.tcl, die durch CUxD ausgeführt wird.
@pascal-bay sagte in Aussentemperatur Wetterstation WS980Wifi in iobroker:
global_binout am laufen ist
global_binout
ist eine globale Variable innerhalb des TCL-Skriptes. Sie beinhaltet den kompletten Antwort-String der Wetterstation. -
@paul53 Vielen Dank für die Antwort. Ich probiere es einmal aus und melde mich wieder wenn ich es hinbekommen habe oder nochmals auf Hilfe angewiesen bin.