NEWS
ESP Matrix Anzeige fully IoBroker steuerbar
-
@wuchy
Hi,
ich habe die Laufschrift ebenfalls nachgebaut, allerdings werden die Daten mit meinem Sketch mittels UDP an den WEMOS "gepushed" und nicht "abgeholt". Das ist aber für Dein Problem nebensächlich.
Guckst Du: ioBroker DOT Matrix Laufschrift
Dort speziell den Absatz Software.Ich nehme an, Dir fehlt der Datenpunkt, in dem die Daten für die Laufschrift stehen?
Schau Dir diesbzgl. mal das Script "Matrix-Laufschrift.js" ganz unten auf meiner Seite an.
Ich habe vorher manuell einen Datenpunkt "ausgabe_datenpunkt = 'javascript.0.Laufschrift' " (Typ = Zeichenkette") erstellt.
Das Script füllt diesen Datenpunkt dann zyklisch mit den gewünschten Werten (durch Semikolon getrennt).
Dazu werden im Script zuerst alle gewünschten Daten gesammelt mit getState(xxx) .
Dann werden ggf. einige Umrechnungen vorgenommen ( z.B. windspeed -> bft).
Anschl. if-Abfragen wie z.B.if (gelb_sack_heute == true) { var GelbSackHeute = 'Heute Gelber Sack;' } else { var GelbSackHeute = '' }
Das bewirkt, daß wenn heute der Gelbe Sack abgeholt wird, die Variable var GelbSackHeute = 'Heute Gelber Sack;' gesetzt wird (beachte das Semikolon am Ende, was als Feldtrenner für die Matrix benötigt wird).
Ist heute kein Abholtermin, ist die Variable var GelbSackHeute = '' leer, bzw. ein leerer String.Wenn alle gewünschten Variablen erzeugt sind, wird daraus damit die Variable "ausgabe" gefüllt:
var ausgabe = Service + DutyCycle + Badezimmer + tf_aussen + tf_wohnzimmer + .......
Darin sind dann alle Werte enthalten (auch die Leerstrings, die aber auf der Matrix nicht angezeigt werden).
Die "ausgabe" wird dann in den oben erwähnten "ausgabe_datenpunkt" geschrieben:var pfad = ausgabe_datenpunkt setState(pfad , ausgabe, true);
Dieser Datenpunkt ist dann die URL, die vom Matrixdisplay benötigt wird.
Ich hoffe, ich konnte das einigemaßen rüberbringen und es hilft Dir weiter?
Gruß
Jörg -
Riesen Dank für deine Antwort und deine Erklärungen. Ich glaube ich hab's gerafft.
Na dann werde ich mich über's Wochenende mal damit auseinandersetzen.LG wuchy
-
du hast da viel arbeit reingesteckt und das mit dem push der daten ist definitiv eine gute verbesserung - soll ich dein project in den ersten post mit aufnehmen ? ich werde meinen sketch nicht weiterentwickeln - ich überlege selber schon, eines meiner zwei matrixen mal mit deinem sketch zu testen.
möchtest du einen eigenen thread aufmachen (oder hast du schon einen), um auf updates aufmerksam zu machen - den könnte ich auch verlinken - es wird schwierig für neue user, zuerst meinen thread durchzulesen und anschliessend deine version zu finden@wuchy je nachdem , welchen sketch du verwendest - bitte schreibe den ansprechpartner in deinen post - @joergeli oder @liv-in-sky damit wir wissen, was du letztendlich benutzt
-
@liv-in-sky
Jo, Du kannst gerne einen Link auf meine Seite setzen, eigener Thread muss nicht sein.
Evtl. mit dem Hinweis, daß man sich ein wenig mit Arduino, libraries, etc. auskennen sollte.Ich habe ebenfalls nicht vor, Änderungen im Sketch vorzunehmen, da bei mir alles problemlos läuft.
Falls Du testweise mal meine Version flashen willst, beachte bitte:
1.) Ich bin ein Freund fester IP-Adressen --> die Netzwerkparameter müssen daher manuell im Sketch eingetragen werden.
2.) Ich habe einige Sonderzeichen (z.B. Umlaute) anders als bei Dir definiert --> evtl. werden dann Ausgaben bei Dir nicht richtig dargestellt.
3.) Ich habe zusätzlich einen LDR an PIN A0 zur Helligkeitssteuerung verwendet, ohne den funktioniert die Schaltung evtl. nicht. Falls kein LDR zur Hand ist, einfach mit einem Festwiderstand (~ 10k) ersetzen.Have Fun
Jörg -
ich habe heute die Hardware aufgebaut und den Sketch aufgespielt. Läuft alles einwandfrei. In den kommenden Tagen ist dann die Verbindung zu iobroker dran. Kann man deinen Skript irgendwie in iobroker importieren? Meine kurzen Versuche mit dem erstellen eines neuen Skriptes scheiterten beim copy/paste.
LG wuchy
-
@wuchy
Sollte aber gehen.
Neues Javascript anlegen - korrekt.
Meinen Code mit CTRL + c aus dem Browser in die Zwischenablage übernehmen.
Im neuen Script mit dem Cursor in die 1. Zeile gehen, dann CTRL + vGruß
Jörg -
@joergeli
diese Vorgehensweise funktioniert bei mir leider nicht. Wenn's nicht geht, muss ich wohl teile deiner Datei "abtippern" -
@wuchy
Mmmmh, komisch .....
Ich habe es gerade bei mir noch mal getestet mit Firefox unter WIN7:
Mein Script im Browser aufrufen --> Ctrl + a (alles auswählen)
Dann Ctrl + v (kopieren)
Dann in ioBroker --> Scripte auswählen.
Anschl. Dein neu erstelltes, leeres JavaScript auswählen (Doppelclick)
Dann den Cursor mit der Maus in Zeile 1 des leeren Scriptes setzen.
Dann Ctrl + v (einfügen). Hinweis: rechte Maustaste --> Einfügen funktioniert im JS-Editor nicht !!!Ich gehe mal davon aus, daß Du unter Windows arbeitest?
Klappt es denn, wenn Du das Script in eine beliebige Text-Datei in Windows kopierst?
Schreib doch mal genau, wo es nicht funktioniert.Alternativ kannst Du zum Testen, ob Deine Matrix irgendwas ausgibt, mal folgendes machen:
1.) Neuen Datenpunkt javascript.0 --> Laufschrift (Typ Zeichenkette) manuell anlegen.
( Objekte javascript.0 markieren, dann + Symbol anclicken, in neuem Fenster "Neues Objekt hinzufügen:.." --> Name: Laufschrift)2.) Manuell irgendwas in den Datenpunkt Laufschrift reinschreiben, z.B: Morgen: Bio-Abfall;3 offene Fenster;Nur ein Test;
(Beachte, daß jeder Einzeltext mit Semikolon abgeschlossen ist!)3.)Wenn Du den WEMOS mit meinem Sketch geflashed hast, sollten spätestens nach 45 Sekunden die Texte nacheinander in der Matrix auftauchen.
Gruß
Jörg -
@wuchy
Noch was:
Mein Script dient lediglich zur Veranschaulichung, wie man den Datenpunkt für die Matrix füllen kann.
Du kannst das nicht 1:1 übernehmen, da Du ja ganz andere Gegebenheiten hast, sprich andere Sensoren/Aktoren betreibst. Deshalb musst Du natürlich im Script sämtliche Einlesepunkte und if-Abfragen anpassen!Versuch erst mal zu Testen, ob Deine Matrix überhaupt Daten bekommt, wie ich bereits bei "Alternativ kannst Du testen...." beschrieben habe.
Gruß
Jörg -
ich habe den Inhalt Deiner Datei importiert bekommen ( unter win10 mit firefox, chrome geht nicht) und das Skript schaufelt artig Daten in den neuen Datenpunkt.
Leider bekomme ich die Daten nicht zum Wemos. Die Matrix meldet " warte auf Daten vom iobroker ". Muss ich evtl. noch etwas in der simple-api einstellen? Der Port steht wie in der ino auf 8087. Der Serielle Monitor zeigt mir die Verbindung zum Router und die aktuelle ntp Uhrzeit ( wird ständig aktualisiert )an. Mehr ist auf dem Seriellen Monitor nicht zu sehen. Hast du evtl. noch eine Idee?LG wuchy
-
@wuchy
simple-api Port 8087 ist bei mir auch eingestellt.Könnte es evtl. ein Problem mit den IP-Adressen sein?
Überprüfe bitte mal, ob die jeweiligen IP-Adressen "zusammenpassen":1.) Stimmt im JavaScript die IP-Adresse des WEMOS:
//Wemos IP-Adresse var udpIP = '192.168.192.19'
mit der IP-Adresse im Sketch:
IPAddress ip(192, 168, 192, 19); //### local ip-address
überein (natürlich mit Deiner eigenen Netzwerkadresse)?
2.) Stimmen im Javascript der UDP-Port (6610):
// "update" an WEMOS senden (pushen), damit dort die Laufschrift sofort aktualisiert wird const dgram = require('dgram'); var udpPort = 6610 var udpMessage = "update" var client = dgram.createSocket('udp4'); client.send(udpMessage, 0, udpMessage.length, udpPort, udpIP, function(err, bytes) { if (err) throw err; client.close(); })
und der UDP-Port im Sketch:
// UDP WiFiUDP NTPudp; int localCNTRLport = 6610; char incomingPacket[255]; WiFiUDP CNTRLudp;
überein?
3.) Letztendlich im Sketch noch überprüfen, ob dort der richtige Datenpunkt eingetragen ist
(die IP-Adresse 192.168.192.29:8087 muss durch die IP-Adresse Deines ioBrokers ersetzt werden!)// Laufschrift initialisieren char url[255] = "http://192.168.192.29:8087/getPlainValue/javascript.0.Laufschrift"; //###### Datenpunkt in ioBroker, der abgefragt werden soll #### char scrollPause[10] = "2.5"; // Anzeigedauer char scrollSpeed[10] = "13"; // Scrollgeschwindigkeit (0-xx): je hoeher der Wert, desto langsamer die Geschwindigkeit int effekt_nr = 6; // Start mit Effekt Nr.6 (0-8)
4.) Im Browser mal die Datenpunkt-Adresse direkt eingeben:
http://192.168.192.29:8087/getPlainValue/javascript.0.Laufschrift
dann sollte im Browser so etwas ähnliches angezeigt werden:
"Au`en 6.3$C 81 %;Wohnz. 22.7$C 40 %;1003 hPa 33 km 5 Bft;Heute: Bio-Abfall;2 offene Fenster;Wasserverbr. 15 l;;;"
Wichtig sind dabei die Semikola zwischen den einzelnen Werten und die Gänsefüßchen am Anfang und Ende.
Gruß
Jörg -
sollte meiner Meinung nach alles stimmen. Leider komme ich erst morgen dazu, das zu überprüfen.
Jedenfalls jetzt schon einmal vielen Dank für deine Hilfe.Gruß wuchy
-
habe alle Ports usw. überprüft, alles so wie von dir angegeben. Im Browser erhalte ich auch die Daten.
Mir kommt das Verhalten meines wemos komisch vor. Beim Drücken der Taste für die Modi erhalte ich nur Sinnfreies im Seriellen Monitor. Lasse ich den wemos nach einem Neustart etwas laufen, bleibt nach einer Weile die Lautschrift stehen und der wemos friert ein. Ich bin fast der Meinung, das beim kompilieren schon etwas schief geht. (obwohl beim Kompilieren keine Fehler ausgegeben werden und der wemos dann auch startet) Ich habe den Boardverwalter 2.4.1 und die Lib's von liv-in-sky in Benutzung.Gruß wuchy
-
@wuchy
Hi,
ich habe meine Matrix jetzt noch mal an den PC gehängt.
Der serielle Monitor zeigt folgendes an:
Was mich stutzig gemacht hat, ist Deine Aussage "Beim Drücken der Taste für die Modi erhalte ich nur Sinnfreies im Seriellen Monitor"
Ich habe daraufhin noch mal den Schaltplan von meiner WEB-Seite mit dem Sketch verglichen.
Dabei ist mir aufgefallen, daß ich wohl im Schaltplan den "Effekte-Taster" fälschlicherweise mit PIN D4 verbunden habe.
Im Sketch ist er - korrekt - mit PIN D1 verbunden ( Asche auf mein Haupt )
An D4 hängt aber auch die interne, blaue Board-LED des WEMOS
Kontrolliere bei Dir, ob der Effekte-Taster an D1 hängt.Ich habe auch noch mal versucht, meinen WEMOS neu zu flashen, aber das Kompilieren bricht mit Fehlermeldungen ab.
Jetzt muß ich bei mir erst mal nachforschen, woran das liegt.Ansonsten habe ich jetzt auch keine richtige Idee mehr, warum bei Dir die Daten vom ioBroker nicht am WEMOS ankommen.
Bitte berichte, ob es evtl. am falschen PIN des Effekt-Tasters gelegen hat.Gruß
Jörg -
@joergeli ganz andere frage - würdest du mir bitte erklären: wie machst du das mit dem roten text und auch noch in fettschrift
sorry vergiß die frage - jetzt hab ich es gesehen
-
@wuchy
Ich habe den Schaltplan auf meiner WebSeite korrigiert.
Wie ist der Stand der Dinge bei Dir?Gruß
Jörg -
@liv-in-sky
Ja, hat bei mir auch etwas gedauert, bis ich es herausgefunden habe :-)) -
nach Umbau auf D1 werden mir jetzt im Seriellen Monitor die Effekte nacheinander angezeigt. Ansonsten bin ich leider noch nicht weiter.
Ich habe in der IDE bereits div. ESP8266-12 Boards ausprobiert, entweder ließ sich der Sketch nach dem kompilieren Hochladen, oder es wurde der Vorgang abgebrochen. Nodemcu und wemos Adapter zeigen das gleiche Verhalten. ( Matrix startet jetzt komischerweise mit wirr laufenden einzelnen Punkten in der oberen Zeile ( manchmal startet der wemos auch mit "starte" ) und nach Erhalt der Uhrzeit wartet der wemos auf die Daten von iobroker)
Vielleicht ist ja etwas mit dem wemos nicht in Ordnung. Ich werde morgen mal einen komplett neuen wemos probieren.Gruß wuchy
-
@wuchy
"Wirre Zeichen" der Matrix lassen eher ein Problem mit den Displays vermuten.
Ich hatte ja auf meiner Webseite auch beschrieben, daß ich beim Anfassen meiner Displays plötzlich "komische" Effekte hatte. Das lag aber an den Displays, bzw. an den mangelhaften Platinen.
--> Scherheitshalber mal alle Daten-/Spannungsversorgungsleitungen zu den Einzel-Displays mit einem Ohmmeter durchmessen ( auch zwischen den einzelnen Modulen ! )
Auch mal die Module leicht!!! durchbiegen und beobachten, ob irgendwelche Effekte auftreten.NodeMCU und WEMOS mini D1 sind im Prinzip das Gleiche, bis auf die Anzahl der verfügbaren IOs.
In der Arduino IDE muss aber trotzdem das jeweils das richtige Board eingetragen werden, also
NodeMCU 1.0(ESP-12E Module), bzw. LOLIN(WEMOS) D1 R2 & mini.Das löst aber alles nicht das Problem mit den nicht ankommenden Daten von iobroker.
Ich bin mir nicht sicher, ob es evtl. mit dem NPM Modul "dgram" zusammenhängen könnte,
welches im Javascript verwendet wird:// "update" an WEMOS senden (pushen), damit dort die Laufschrift sofort aktualisiert wird const dgram = require('dgram'); var udpPort = 6610 var udpMessage = "update" var client = dgram.createSocket('udp4'); client.send(udpMessage, 0, udpMessage.length, udpPort, udpIP, function(err, bytes) { if (err) throw err; client.close();
Ist bei Dir im Script unter dem "require('dgram');" eine Wellenlinie, was evtl. auf des Fehlen dieses Moduls hinweisen könnte?
Ich mache mal einen neuen Thread diesbzgl. auf, evtl. können die "Cracks" was dazu sagen,
siehe hier: NPM-Modul dgram
--> Habe schon Anwort bekommen: Daran kann es auch nicht liegen.Könntest Du Dein JavaScript mal hier als Text-Datei anhängen, dann schaue ich es mir mal an?
Gruß
Jörg -
@wuchy
Hallo,
ich habe meinen Sketch jetzt wieder zum Kompilieren und Hochladen bekommen
Es lag bei mir an den verwendeten Libraries MD_MAX72xx und MD_Parola.
Ich hatte zwischenzeitlich mal (für andere Projekte) andere Library-Versionen verwendet, deshalb gab es bei mir Probleme.Wenn Du jetzt Dein Javascript hier mal einstellst, kann ich es direkt bei mir testen.
Nun bin ich guten Mutes, daß wir dem Problem auf die Schliche kommenGruß
Jörg