Seite 1 von 2
Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 7. Mär 2022 06:50
von Norick
Hallo
ich versuche von einem Sensor (Wetterstation) einen Datenstream einzulesen und dann die Temperatur anzuzeigen. Der serielle Datenstream kann ich soweit einlesen und anzeigen.
Model.PNG
Danach habe ich folgende Rule erstellt:
Rule.PNG
Das Blockly habe ich so umgesetzt:
- Zuerst den Datenstream einlesen und als Variable "ElsnerData" speichern.
- Dann von diesem Datenstream nur die Character 1-6 einlesen und als "Aussentemperatur" speichern
- Danach "Aussentemperatur" ans Model mit dem Eintrag "Aussentemperatur" schicken
Blockly.PNG
Nun es funktioniert (noch) nicht sodass ich unter "Aussentemperatur" nur den ganzen Datenstream angezeigt bekomme. Kann mir jemand weiterhelfen?
Danke

Re: Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 7. Mär 2022 11:58
von SkyWalker2_D
Moin!
Leider kann ich nicht weiterhelfen da ich selbst erst am Anfang von OH3, Blockly und Co. stehe!
Aber darf ich auf diesem Wege mal nach einem Tipp fragen? Du lässt ja einen Wert auslesen und speicherst diesen dann, richtig?
Macht man das mit 'store value' in eine definieret Variable? Und kann man dann diese Variable an ein item senden lassen? Bei mir geht
es um Helligkeit einer Lampe, die vorab erfragt und gespeichert werden soll und dann nachdem die Lampe heller gesetzt wurde, wieder
auf den abgefragten & gespeicherten Wert zurück soll.
So in etwa verstehe ich Deine Rule ja auch, oder?
Re: Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 7. Mär 2022 13:27
von udo1toni
Du darfst da nicht auf das Thing zugreifen, Du musst das Item verwenden!
Re: Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 9. Mär 2022 06:55
von Norick
@SkyWalker2_D Nun das sind auch Fragen die ich selber habe und noch nicht durchblickt habe. Vielleicht klärt sich das noch im weiteren Verlauf..
@udo1toni
OK verstehe - der Rest im Blockly kommt ungefähr hin? Ich meine mit dem speichern in einer Variable? Kann ich so dann im log-File den gepeicherten Wert anschauen?
Re: Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 9. Mär 2022 10:31
von udo1toni
Ich habe keine Ahnung, wo die Ausgabe des print-Befehls landet. Sauber wäre es, dafür einen log-Block zu verwenden. Tipp hier: die log Level gibt es nicht ohne Grund. Man kann openHAB zur Laufzeit anweisen, log-Meldungen erst ab einem bestimmten Level anzuzeigen. Das ist pro Logger einzustellen (logger.name). Du kannst also die Werte z.B. mit dem Level DEBUUG schreiben lassen und den Logger auf DEBUG setzen, dann tauchen sie im Log auf. Schaltest Du auf DEFALUT zurück (das ist der Level INFO), werden die Meldungen nicht mehr ausgegeben.
Re: Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 11. Mär 2022 06:53
von Norick
jetzt habe ich es mal so probiert aber ich bekomme keine Ausgabe im log-file.
blockNew.PNG
irgendetwas muss ich noch falsch machen. Muss ich die Daten zuerst in einer Variable speichern oder?

Re: Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 11. Mär 2022 15:46
von udo1toni
Im zweifel musst Du zunächst einen Logger definieren.
Re: Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 11. Mär 2022 21:37
von Harka
log error/warn/info funktionieren bei mir problemlos.
Der Logger wird im Hintergrund automatisch definiert.
Code: Alles auswählen
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
logger.error('abc');
Bei print hatte ich in der früheren Version eine quasi eingebrannte Ausgaben auf der Bildschirmmitte welche von dort nur umständlich entfernt werden konnte. Soweit ich die Aussage im engl. Forum verstanden habe soll man um print auch ein Bogen machen.
Re: Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 12. Mär 2022 07:47
von Norick
also wenn ich diesen Code habe:
Code: Alles auswählen
var ElsnerData;
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
ElsnerData = itemRegistry.getItem('Aussentemperatur');
logger.debug('ElsnerData');
dann müsste ich im Verzeichnis ..\userdata\logs
ein File logger.txt haben? Dies ist nicht der Fall und ich frage mich wie man allenfalls das logging zuerst aktivert - falls nötig?!
Re: Wie wird via Blockly ein Sensorwert geschrieben und angezeigt?
Verfasst: 12. Mär 2022 10:17
von Harka
Ähm, gerade gesehen das Du ja schon eine
Frage bezüglich Logging unter Windows gestellt hattest. Ich vermute mal das dieses Problem daher rührt.