Hallo zusammen,
ich nutze einen W1 mine mit ESPeasy um Temperatursensoren BME280 abzufragen.
Das funktioniert auch ganz gut. Allerdings frage ich die Sensoren nur alle 10 Minuten ab um nicht so viel traffic zu erzeugen.
Da allerdings die Spiegeleizung im Bad daran hängt würde ich gerne für die Zeit in der sich jemand im Bad aufhält die Abfragehäufigkeit auf 1 mal pro Minute erhöhen oder gerne auch bei Bedarf abfragen. Ich sehe aber keine Möglichkeit wie man das machen könnte.
Die Frage in Kurzfassung: Kann man aus Fhem heraus den BME280 zu einem Update der Werte bewegen?
Vielen Dank
Ja, man kann manuell "trickern", also auch aus FHEM herraus.
Stichwort "TaskRun"
Siehe: https://www.letscontrolit.com/wiki/index.php?title=ESPEasy_Command_Reference (https://www.letscontrolit.com/wiki/index.php?title=ESPEasy_Command_Reference)
Hallo zusammen,
@Werniemann: Ja das funktioniert. Aber noch bin ich nicht ganz zufrieden, denn aktuell sage ich bei einer Luftfeuchtigkeit von x% dann y. Allerdings ändert sich die Luftfeuchtigkeit je nach außen Temperatur. Also ein statischer Wert x funktioniert nicht ganzjährig.
Das heißt ich müsste die letzten beiden Werte des Sensors vergleichen und fragen hat sich die Luftfeuchtigkeit vom vorletzten zum letzten Wert um x verändert? Damit wäre die Berechung dynamisch.
Hat jemand eine Idee wie man das umsetzen kann?
Geht das mit den Eventagregatoren?
Vielen Dank.
Du könntest über einen Dummy arbeiten, d.h. die alten Werte dort ablegen .... wenn Du es IM esp abarbeiten willst.
In FHEM selber ist vieles Möglich ....
Hast du eine Lösung wie man in Fhem die Werte aus einem Log File miteinander vergleicht um damit die Differenz zu ermitteln?
Danke
Es gibt im FHEM die Varaible "oldvalue" (oder so Ähnlich). Genaue Verwendung mußt Du andere fragen ...
Danke für den Hinweis.
Ich habe einen OldReadings auf angelegt und möchte ich das Oldreading mit dem Reading vergleichen. Aber das Zahlformat stimmt scheinbar nicht_
DOIF
([ESPEasy_ESPEasy_ESP_Bad_Temp:Humidity] >= [ESPEasy_ESPEasy_ESP_Bad_Temp:OldReadings.Humidity]) (set watchdog_Bad inactive;) DOELSE (set watchdog_Bad active)
Hier das Warning dazu:
warning
condition c01: Argument "" isn't numeric in numeric ge (>=)
Der Wert Humidity sieht so aus: 44.39 - das sieht für mich eigentlich nach einer Zahl aus.
Kennt jemand das Problem?
Google, 1. Treffer:
https://forum.fhem.de/index.php?topic=72471.0
Habe vor einiger Zeit mit Hilfe aus dem Forum genau so was gebaut
Ich habe im DOIF stehen:
DEF
{if ([$SELF:increase] > 10) {system("/var/kr/badluefter/10min&")}}
und als Attribut:
DOIF_Readings
increase:([Feuchtesensor_Bad:humidity]-OldReadingsVal("Feuchtesensor_Bad","humidity",0))/[Feuchtesensor_Bad:humidity]*100
Danke Klaus,
das läuft super so!
Hallo,
leider funktioniert die Abfrage der Sensorwerte über HTTP noch nicht.
Aufruf:
http://192.168.178.87/control?cmd=event,abfrage
Device 1 ist ein BME280 - mit Temperatur, Luftfeutigkeit, Luftdruck
Rules
on abfrage do
TaskRun,1
endon
Beim Aufruf der URL wird in Fhem keine Aktualisierung durchgeführt. Wo liegt hier noch der Fehler?
Vielen Dank
Holst Du jetzt die Werte oder Pushed Du?
Die Werte werden vom ESPEasy im 5 min Takt geschickt.
Allerdings will ich gerne manuell die Sensorwerte holen können.
Dafür dachte ich könnte ich den Aufruf per URL machen:
http://192.168.178.87/control?cmd=event,abfrage (http://192.168.178.87/control?cmd=event,abfrage)
Damit möchte ich den ESP veranlassen, die Werte per Aufruf zu schicken.
Das Event wird getrickert, aber die Werte nicht geschickt?
Automatisch funzt es aber?
Nutze es selber nicht, aber ein paar Tips:
wird was geschickt wenn Du direkt in der ESPEasy Oberfläche bei Tools TaskRun,1 eingibst?
Was passiert wenn Du
http://192.168.178.87/control?cmd=TaskRun,1
schickst?
evtl. auch mal TaskRun,1,2 für nur die Luftfeuchtigkeit?
Zitat von: Wernieman am 13 November 2020, 14:35:31
Das Event wird getrickert, aber die Werte nicht geschickt?
Automatisch funzt es aber?
Das ist etwas verwirrend. Task 1 ist erstmal nur das Device BME280 - Sensor. Ein Taskrun führt nicht dazu das die Sensorwerte erneut abgefragt werden.
Zur Frage von Wernieman: Ja, die Intervall-basierte Abfrage funktioniert problemlos.
Ich kann auch in Fhem ein: "set <Device> Taskrun 1" starten. Aber auch das führt zu keinem anderen Ergebnis.
Auch ein HTTP Request hilft nicht
http://192.168.178.75/control?cmd=TaskRun,1,1 (http://192.168.178.75/control?cmd=TaskRun,1,1)
Es gilt also herauszufinden wie man das Abfragen der Sensorwerte manuell auslösen kann?
Der Weg über Taskrun ob über die URL oder nicht, scheint nicht des Rätsels Lösung.
Danke
Kannst Du uns mal die Config des Sensors geben?
Hier das List:
Internals:
DEF 192.168.178.75 80 ESPBridge ESP_Easy_Kueche_Temp_Kueche_Temp
ESPBridge_MSGCNT 472
ESPBridge_TIME 2020-11-17 15:11:31
ESP_BUILD 20103
ESP_BUILD_GIT mega-20190630
ESP_BUILD_NOTES - Mega
ESP_NODE_TYPE_ID ESP Easy Mega
ESP_SLEEP 0
ESP_UNIT 0
ESP_VERSION 2
FUUID 5d7fbdd7-f33f-aed9-decc-965b597dd317e5c9
HOST 192.168.178.75
IDENT ESP_Easy_Kueche_Temp_Kueche_Temp
INTERVAL 300
IODev ESPBridge
LASTInputDev ESPBridge
MAX_CMD_DURATION 1
MSGCNT 472
NAME ESPEasy_ESP_Easy_Kueche_Temp_Kueche_Temp
NOTIFYDEV global
NR 1029
NTFY_ORDER 50-ESPEasy_ESP_Easy_Kueche_Temp_Kueche_Temp
PORT 80
STATE Temp: 22.13: Luftf.: 32.73 %
SUBTYPE device
TYPE ESPEasy
VERSION 2.18
Helper:
DBLOG:
Humidity:
logdb:
TIME 1605622291.24724
VALUE 32.73
Temperature:
logdb:
TIME 1605622291.24724
VALUE 22.13
READINGS:
2020-11-17 15:11:31 Humidity 32.73
2020-11-17 15:11:31 Pressure 1017.91
2020-11-17 15:11:31 Temperature 22.13
2020-11-17 15:12:05 presence present
2020-11-17 15:12:05 state Hum: 32.73 Pre: 1017.91 Tem: 22.13
helper:
fpc 1605275547
pm:
Encode 1
JSON 1
received:
Humidity 1605622291
Pressure 1605622291
Temperature 1605622291
sec:
admpwd
Attributes:
DbLogExclude .*
DbLogInclude Humidity,Temperature
IODev ESPBridge
Interval 300
alias Küche Temperatur
event-on-change-reading Humidity,Temperature
group ESPEasy Device,Heizung
presenceCheck 1
readingSwitchText 1
room Heizung,Küche
setState 3
stateFormat Temp: Temperature: Luftf.: Humidity %
verbose 2
Siehe Screenshot - ESP Easy
was passiert, wenn Du im Device (auf der espeasy-Oberfläche) eingibst:
TaskRun,1
Sofern ich weiß, überträgt das Device die Daten nur Komplett .... (also nicht 1,1 sondern nur 1)
Leider passiert da gar nichts:
siehe: screenshot
-->keine datenübertragung nach fhem
Hast Du mal unter Tools/Log vom ESP geprüft, ob die HTTP-Anfage überhaupt beim ESP ankommt?
Wenn ich mich richtig erinnere, dann muss zusätzlich zum Controller FHEM HTTP noch ein Controller Generic HTTP definiert werden, der auf Port 80 lauscht.
Außerdem finde ich die device Auflistung merkwürdig.
Bei meinen I2C-Sensoren steht in der Spalte Port jeweils I2C und in der Spalte GPIO jeweils SDA:4 und SCL:5
Edit 1: Dein ESPEasy in der Version 20190630 ist auch schon etwas älter.
Edit 2: Eine vergleichbare Lösung über MQTT habe ich hier beschrieben: https://forum.fhem.de/index.php/topic,113632.msg1078962.html#msg1078962 (https://forum.fhem.de/index.php/topic,113632.msg1078962.html#msg1078962)
Nein, ein http-Connecktor muß dafür nicht definiert werden.
Es ist logisch, das dort nur ein "OK" steht, schließlich giebt der Befehl keine Ausgabe. Die Frage ist also eher, auf FHEM Seite erscheint nichts?
Habe hier, allerdings ist es ein Dummy, in den Rules stehen: "TaskRun 2" und es funzt .... allerdings ein "mega-20190110". Ist nicht der heueste, bin aber aktuell zu faul zum Updaten (aufschrauben, direkt flashen und wieder einbauen, zuwenig Speicher für ota- flash)
Ok, vielleicht habe ich das mit dem MQTT Generic Import verwechselt.
Zitat von: Wernieman am 18 November 2020, 11:52:48
Habe hier, allerdings ist es ein Dummy, in den Rules stehen: "TaskRun 2" und es funzt .... allerdings ein "mega-20190110".
Ich habe das jetzt bei mir mal getestet.
Die Eingabe von
Taskrun,2
im der Command-Zeile unter Tools funktioniert.
Bei einem device habe ich allerdings 2 Controller definiert. Mit diesem device funktioniert es nicht.
Das ist hier zwar keine Erklärung für die Fehlfunktion des TE, da im entsprechenden device nur 1 Controller definiert ist.
Da befürchte ich, das Du mal im espeasy-Forum nachfragen mußt ...
bzw. .. es ist doch ein MQQT-Device? Dafür gibt es explizit auch eigene Sendefunktionen. Schaue mal in die Doku ...
Bin ich gemeint?
Das funktioniert hier in einer Regel über publish sehr gut.
on VEML6070#UV-Risk do
publish %sysname%/VEML6070/UV-Risk, [VEML6070#UV-Risk]
endon
Hallo,die Frage nach der Übertragungshäufigkeit ist doch einfach :-)
Screenshot weiter vorn : Devices >> Send to controller 600 s = 10 Min >> den einfach auf 60 und dann kommen die Werte alle Minute.
Peter