Hallo,
ich bin absolut neu in der Thematik fhem. Habe es inzwischen diverser Blog und Seiten immerhin geschaft den Server auf einem Raspberry (1) zu bekommen um meine Steckdosen zu schalten. Das klappt inzwischen gut. Nun wollte ich ein zusätzliches Gerät hinzufügen mit einem NodeMCU V? wo ein OLED Display und ein Taster dran hängt.
Taster ist eingerichtet in FHEM und steuert eine Steckdose. Funktionier echt Prima. Nun komme ich endlich zum Punkt.
Ich bekomme auf dem Display über die direkte Ausführung oder Eingabe von "set LCD_Display oled 1 1 Test" auf dem Display etwas angezeigt. Die Verknüpfung mit dem Wetter bekome ich leider überhaupt nicht hin. Komme mit diesem REGex oder ähnlich nicht zurecht.
Ich habe das Gerät Wetter, OUT.Wetter darin ist in State die Temperatur die ich brauche auf dem Display. Ein "set LCD_Display oled 1 1 Out.Wetter state" gibt den Text aus :-(
Ich weiß das ich da ein Gedanken fehler mache sehe ihn aber noch nicht...
Kann mir vielleicht jemand auf die Sprünge helfen?
Liebe Grüße
aus Berlin Harry.
Danke fürs lesen, ich habe es dann himbekommen :-)
Zitat von: gonzo_6 am 04 Februar 2017, 16:37:21
Danke fürs lesen, ich habe es dann himbekommen :-)
Ich habe tatsächlich gerade etwas dazu schreiben wollen.
Es wäre nett, wenn Du uns Deine Lösung verraten würdest und auch noch ein [Gelöst] vor den Titel des Threads hängen könntest.
Gruß,
Thorsten
Sorry hatte deinen Text nicht gelesen.
Also ich habe ein notify erstellt wo der Temperatur wert abgelegt wird, das schick ich dann mit set LCD_Display oled x y temp dahin.
my $temp = ReadingsVal("OUT.Wetter", "temp_c", "");
So lese ich es aus und dann lass ich es mir mit:
fhem("set teleBot message Aussentemperatur ist $temp C"); aufs Handy senden. Theoretisch könnte man anstatt set teleBot natürlich obiges Einsetzen.
set LCD_Display oled x y $temp
Ich hoffe ich hab es ein wenig veständlich erklären können, tue mich damit etwas schwer.
Ich habe folgendes Problem:
wenn ich mit einem at +*00:05:00 {system("wget -p -O- 'http://.....} auf mein OLED schreibe, klappt alles prima.
sobald aber mein ESP nicht mehr am Netz ist, also z. B. warum auch immer ausgeschaltet ist, friert FHEM ein.
gibts dafür eine Lösung, mache ich was falsch?
https://wiki.fhem.de/wiki/HttpUtils#HttpUtils_NonblockingGet
Zitat von: HRueck am 20 April 2017, 11:50:54wenn ich mit einem at +*00:05:00 {system("wget -p -O- 'http://.....} auf mein OLED schreibe, klappt alles prima.
sobald aber mein ESP nicht mehr am Netz ist, also z. B. warum auch immer ausgeschaltet ist, friert FHEM ein.
Verwende entweder eine entsprechende Funktion aus HttpUtils (such mal im Wiki für Details), oder mach es so:
+*00:05:00 "wget -p -O- 'http://.....
Dann wird das ganze im Hintergrund ausgeführt und tut erstmal nicht mehr so weh. Das Problem an letzterer Lösung ist, dass die ganzen wget-Prozesse dann erstmal rumhängen.
In HttpUtils müsste es auch Funktionen geben, die das ganze im Hintergrund mit Timeout etc. machen.
Gruß,
Thorsten
Danke erstmal für die Antworten!
Also das mit den HttpUtils ist (zumindest für mich) schon ganz nett heftig, da steige ich nicht so einfach durch!
Das gibt also eine extra Baustelle.
Wie ist das, wenn man für das ganze ESPEasy Device mit oled verwenden würde?
Gibt es dann die gleichen Probleme?
Mal abgesehen davon, dass es mir immer noch nicht gelungen ist, ein ReadingsVal("x","y","") zu senden.
Als Alternative zu eigenen httpUtils/curl/wget Aufrufen kann man auch das ESPEasy Modul verwenden. Ich habe gerade eine neue Version eingecheckt (ab morgen 8:00 Uhr per Update oder jetzt schon aus dem svn), die OLEDs oder LCDs korrekt handhaben sollte. Auf Wunsch wird der Displayinhalt vor und nach der Ausgabe auf der entsprechenden Zeil auch gelöscht. Somit erspart man sich ggf. das eine oder andere "oledcmd clear" und neuschreiben aller anderen Zeilen.
Zitat von: HRueck am 20 April 2017, 13:19:47
Mal abgesehen davon, dass es mir immer noch nicht gelungen ist, ein ReadingsVal("x","y","") zu senden.
Wenn Du das ESPEasy Modul verwendest, dann kannst Du beispielsweise folgende Kommandos verwenden:
set <esp> oled 1 1 Temperatur: [device:reading]C
set <esp> oled 1 1 Temperatur: {(ReadingsVal("device","reading",0)."C")}
<esp> mußt Du durch den FHEM Devicenamen des ESP ersetzen. device und reading, in dem Besipiel, müßtest Du ebenfalls durch Deine Device- u. Readingnamen ersetzen.
Ausgabe auf dem Display wäre:
Zitat
Temperatur: 10C
In der aktuellen Version des ESPEasy OLED Plugins sind nur 7bit ASCII Zeichen möglich, ein ° für Grad wird nicht korrekt dargestellt.
Danke, die richtige Formatierung ist halt immer das Problem!
Nochmals zurück zum Ursprungsproblem:
Wie reagiert das ESPEasy Modul, wenn der ESP nicht erreichbar ist?
Mit einem Eintrag ins Log, ohne FHEM zu blockieren. Wenn das Attribut resendFailedCmd gesetzt ist, dann wird der Befehl auch wieder in die Command-Queue gestellt um ihn, bei Wiedererreichbarkeit, erneut zu senden.
Zitat von: HRueck am 20 April 2017, 13:19:47Mal abgesehen davon, dass es mir immer noch nicht gelungen ist, ein ReadingsVal("x","y","") zu senden.
Was hast Du denn versucht?
Gruß,
Thorsten
Ich möchte die Ports eines PCF8574 teilweise als Input und teilweise als Output verwenden.
Beides funktioniert mit "pcfgpio" zunächst einmal einwandfrei.
Wenn ich aber:
-Input auf Masse durchschalte (Reading Switch geht von "on" auf "off")
-Output einschalte (angeschlossene LED leuchtet)
-Input öffne: Reading geht nicht zurück auf "on" sondern bleibt auf "off"
Was läuft falsch?
Du brauchst einen Pull-Down Widerstand und schalte dann mal Plus, statt Minus.
Marek
http://famosastudio.com/fastwp303/wp-content/uploads/2011/07/PushButton-ResistorPullDown.jpg (http://famosastudio.com/fastwp303/wp-content/uploads/2011/07/PushButton-ResistorPullDown.jpg)
Aber das Schalten funktioniert ja.
Und auch das Anzeigen des Inputs.
Nur eben nicht die Abfolge wie oben beschrieben
Ich habe nun festgestellt, dass wenn ich den Port den ich wieder öffne anschliessend auf VCC setze, das akzeptiert wird.
Hier nochmals das Problem zusammenfassend, falls ich mich nicht klar ausgedrückt haben sollte:
Input: auf GND -> Status "off" wird angezeigt
Input: offen -> Status "on" wird angezeigt (interner pull-up im PCF8574)
Output: Minus-Pol der LED am Port -> LED schaltet ein/aus mit pcfgpio 0 bzw 1
und nun das Problem:
wenn ein Input auf GND ist, dann ein Output auf 0 also "on" gesetzt wird, und dann der Input geöffnet wird, bleibt der Status des Inputs auf "off".
Ich kann den Input nur mit schalten auf VCC auf "on" bringen. Ohne das vorherige setzen des Outputs geht es bei Input offen.
Die Frage ist nun, ob das am PCF8574 oder am Modul liegt.
Vielleicht kann sich ja mal der Modul-Betreuer dazu äussern!
Danke und Gruss,
Herbert
Nachtrag:
könnte es sein, dass das Modul die internen pull-ups gar nicht initialisiert?
d.h. offener Port ist floating und wird nur per Zufall als high erkannt.
Zitat von: HRueck am 05 Mai 2017, 11:53:29
Vielleicht kann sich ja mal der Modul-Betreuer dazu äussern!
Der liest aber wahrscheinlich keine Posts in "Anfängerfragen". Wahrscheinlich ware es besser, den Thread in das entsprechende Unterforum zu verschieben.
...oder vielleicht gleich dort einen neuen aufmachen, da kaum jemand eine Frage vermutet, wenn "Gelöst" im Titel steht. Außerdem hat das jetzt meiner Meinung nach nicht mehr viel mit dem Thread-Titel zu tun.
Gruß,
Thorsten
Du hast in allen Punkten recht!
Falls es aber trotzdem jemand der sich hierher verirrt interessieren sollte:
mit externen pullups funktioniert es!
es liegt also keinesfalls am Modul.
Hi,
ich hab jetzt mal spaßeshalber das Datenblatt vom PCF8574 überflogen. Ich habe nichts von internen Pullups gefunden. Ich glaube, dass das Teil so etwas einfach nicht hat. D.h. für eine ordentliche Anwendung muss man selbst für Pullups oder Pulldowns sorgen.
Gruß,
Thorsten