Siehst du die übetragenen Werte bei Tastendruck?
Im Seriellen Monitor von Arduino IDE werden Werte angezeigt.
Unter Objekte nicht.
Siehst du die übetragenen Werte bei Tastendruck?
Im Seriellen Monitor von Arduino IDE werden Werte angezeigt.
Unter Objekte nicht.
So, das Ganze war jetzt doch ein bissl komplexer als am Anfang Gedacht.
Hab Dir eine neue zip angehängt.
Die lib uMQTTBroker, brauchst nicht mehr, am besten wieder löschen.
Dafür jetzt die lib esp-mqtt-arduino in den lib Ordner.
Als Plattform kann jetzt auch 2.3.0 verwendet werden. (empfohlen)
Die Matrix_3x4 ist überarbeitet und sollte jetzt mqtt Befehle bei Tastendruck senden:
stat/<TOPIC>/KEY [1...9*#]
Weil ich eben keine Tastatur zum testen habe, habe ich auch eine MQTT Empfang eingebaut.
Mit
cmnd/<TOPIC>/KEY [1...9*#]
können jetzt die hinterlegten http Befehle auch per MQTT ausgelöst werden.
Teste einfach mal ob alles geht
EDIT:
noch ne kleiner Änderung in der ino vorgenommen...
Werde es morgen früh mal testen.
Habe jetzt mal die neue Version hochgeladen. In IOBroker sieht es jetzt so aus
dass wenn ich Key 1 drücke dann unter stat/MATRIX/KEY der Wert 1 in Grün erscheint.
Bei Key 2 die 2 usw.
In der Seriellen Ausgabe werden die einzelnen Key Werte wie gehabt angezeigt.
Jetzt müsste ich nur noch wissen wie ich die Datenpunkte von zb. Key1 an Gerät1
senden muss.
Habe mal ein einfaches Blockly erstellt womit ich zb. Gerät 1 das Gerät 2 mit AN/AUS
schalten kann. Mit Datenpunkt stat/MATRIX/KEY 1 funktioniert es nicht.
Wenn in der Zeile für Key 1
char KEY_1[] = "http://192.168.1.82/cgi-bin/query.sh?3";
ändere auf die IP vom Gerät
char KEY_1[] = "http://192.168.178.15/cm?user=admin&password=joker&cmnd=Power%20Toggle";
dann schaltet das Gerät wie gewünscht.
char KEY_1[] = "http://192.168.1.82/cgi-bin/query.sh?3";
Ja, das waren die Testlinks die ich eingetragen hatte. Die müssen natürlich auf die benötigten geändert werden...
Puh, wie die in IoBroker zu verarbeiten sind .... ??
Es wäre aber auch möglich die MQTT Messages so aussehen zu lassen:
usw. Ich schätze dann hast du für jeden Key nen Datenpunkt den du abrufen kannst.
Wird halt nie ne Nullmeldung kommen ... wenn dir das was nutzt, das wäre kein Problem
EDIT:
Es ließe sich auch mit einem Delay, sagen wir eine Sekunde, nach senden der "1" auch eine "0" senden.... dann hättest du einen Auslöstrigger ... immer wenn 1 dann ...
Danke schon mal das es schon mal so läuft.
Vielleicht klappt es ja noch mit dem Auslöstrigger oder MQTT Message.
Versuchs mal damit.
einfach die .txt in .ino umbennenen
Jetzt sieht es so aus. Nach jedem Druck auf den Key wird ein Datenpunkt angelegt.
Aber mit diesen Datenpunkt kann nicht über den Blockly geschaltet werden.
Jetzt kommt es wohl noch auf einem Auslöstrigger an. false/true wäre gut.
Mann, Mann, Mann ... wenn man nicht aufpasst! Sollte eigentlich schon drin sein mit 1 und null.
Aber der Fehlerteufel war wieder mal mit von der Partie.
Neuer Anhang hier der Matrix_3x4.
Ebenso die Config, Da kannst Du jetzt denn zu sendenden Wert selbst einstellen.
Ob, 1 und 0 oder false und true etc.
Ebenso den Delay wann nach dem true, der false wert gesendet werden soll
ZitatAlles anzeigen// Your MQTT Client config here:
bool EXSERV = true; // Connect to a MQTT Server? [false/true]
char EXMQ[] = "192.168.178.27"; // MQTT Server IP
int EXMPRT = 1883; // MQTT Server Port [1883]
char Val1[] = "true"; // Value if Button pressed
char Val0[] = "false"; // Value if Button reset by delay
int B_Delay = 500; // Button Delay from true to false
Bitte wieder umbenennen.
EDIT:
Weils Probleme gab eine MQTT stat/<TOPIC>/KEY# zu senden (# ist ja bei MQTT eine Wildcard)
Hab ich die durch #=A und *=B ersetzt.
Sieht jetzt ganz anders aus. Als Wert wird nun false/true oder 1/0 je nachdem was in der config
gesetzt wurde. Nur wenn im Blockly der Datenpunkt vom Key 1 genommen wird, dann schaltet
das gewünschte Gerät bei drücken des Key 1 kurz AN und geht wieder AUS.
Das Gerät was mit char KEY_1[] = "http://192.168.178.15/cm?user=admin&password=joker&cmnd=Power%20Toggle"; schaltet einwandfrei.
Ok...
Dann sollte es so gehen:
In der Conig läßt sich jetzt einstellen ob du eine Tastfunktion willst:
also ein, nach zeit aus oder eben nur immer den ein gesendet bekommen möchtest:
ZitatAlles anzeigen// Your MQTT Client config here:
bool EXSERV = true; // Connect to a MQTT Server? [false/true]
char EXMQ[] = "192.168.178.27"; // MQTT Server IP
int EXMPRT = 1883; // MQTT Server Port [1883]
char Val1[] = "true"; // Value if Button pressed
bool B_RST = false; // Automatic Reset to false [false/true]
char Val0[] = "false"; // Value Button reset by Automtaic
int B_Delay = 500; // Automatic Delay Reset
Du brauchst aber ein Blockly:
Wenn 1 gesendet und Sonoff an, dann aus
Wenn 1 gesendet und Sonoff aus, dann an
EDIT:
Wenn über Delay ein false gesendet wird, Dann darf eben nur der true Wert im iobroker ausgewertet bzw. verwendet werden. Ich weiß nicht wie iobroker das macht. könnte sein das ein true wert gar nicht ausgwertet wird, wenn der zuletzt schon anstand, Deshalt der Delay mit false.
EDIT2:
Ich arbeite leider nicht mit IOBroker, evtl als value nicht "true" sondern "toggle" nehmen?
EDIT3:
Oh ...ich hab gerade gesehen das die Matrix_3x4 ebenfalls die Config war... jetzt ist es das richtige File.
So, habe mal ein anderes Blockly erstellt.
Da ja der Datenpunkt von zb. Key 1 eine Tasterfunktion hat schaltet das Gerät
mit dem Blockly zwar dauerhaft AN und bleibt wie gewünscht AN.
Wie müsste jetzt es jetzt aussehen dass wenn ich erneut den Key 1 drücke
dass das Gerät wieder ausschaltet.
Mit den Blockly kann ich zwar wieder ausschalten wenn der Wert auf unwahr
abgeändert ist und Key 1 gedrückt wird.
Wie bereits erwähnt, kann ich dir bei iobroker nicht wirklich weiterhelfen da ich nicht damit arbeite.
Aber ich vermute mal irgendwas wie:
Trigger: "wurde aktualisiert", anstatt "geändert" im Trigger, anerkannt ist "wahr".
(Sonst bräuchtest du wieder den "false" Impuls über einen Delay weil sich der Zustand ja ohne nie ändert)
Und als Ausführung nicht steuere sondern "umschalten"
Ein "Falls" Objekt ist meiner Meinung nach nicht nötig.
Dann sollte eigentlich bei jedem "true" impuls getoggelt werden
Jetzt funktioniert es wie gewünscht.
Lösung war ein Blockly mit Umschaltung.
Key 1 drücken für AN, nochmal drücken wieder AUS
Na also !! Cool !!
Hallo HoerMirAuf
Danke für deine grosse Hilfe, jetzt funktioniert es.
Mal sehen wer damit etwas schalten und walten
möchte. Ich werde mir damit eine Statusüberwachung
erstellen. Wenn alles soweit fertig ist dann stelle ich
dieses mal vor.
Respekt !
Schaut richtig gut aus
Hallo,
als erstes tolle Arbeit läuft super!!
Währe es möglich GPIO 16 als output zu schalten über einen http befehl?
RX für einen seriellen RFID Reader währe auch noch so eine Idee :-))