Hallo,
Ich bin gerade am basteln und möchte euch am Fortschritt teil haben lassen. Angeregt durch einen anderen Thread hier im Forum baue ich mir gerade einen MQTT - RFID - Reader um die Sonos Box im Kinderzimmer zu steuern.
FirmwareAktuell habe ich einen RFID Reader (RC522) mit einem Wemos (Wemos D1 mini) gekoppelt und einen Sketch aufgespielt, der die IDs der Karten per MQTT an FHEM überträgt.
Den verwendeten Sketch hänge ich hier an. Die Settings zum flashen habe ich in einem Screenshot festgehalten.
Die Firmware hat Long-Press Support für die Buttons. Die Zeit ist aktuell auf eine Sekunde eingestellt.
Zusätzlich gibt es einen Watchdog Counter der jede Minute hochgezählt wird.
Durch gleichzeitiges Drücken und Halten der 3 Buttons für mehr als 5 Sekunden wird der Reader auf Werkseinstellungen zurück gesetzt. Wifi und MQTT Einstellungen müssen/können danach neu gesetzt werden.
Integration in FHEMIn FHEM habe ich folgendes Device für das Auslesen der IDs und Buttons
defmod MQTT2_RFID MQTT2_DEVICE
attr MQTT2_RFID IODev MQTT2
attr MQTT2_RFID readingList /RFID_Reader/version:.* Version\
/RFID_Reader/status:.* status\
/RFID_Reader/watchdog:.* Watchdog\
/RFID_Reader/wifi_rssi:.* RSSI\
/RFID_Reader/uid:.* UID\
/RFID_Reader/button1:.* Button1\
/RFID_Reader/button2:.* Button2\
/RFID_Reader/button3:.* Button3
attr MQTT2_RFID room MQTT
Über ein Notify wird das Event ausgewertet und die Sonos Box gestartet:
defmod MQTT2_RFID_notify_2 notify MQTT2_RFID:UID:.b977c756 {fhem('set Sonos_Kinderzimmer play')}
attr MQTT2_RFID_notify_2 room TEST
Integration ins eigene WLANBeim Starten des Gerätes spannt es ein eigenes WLAN auf: RFID_Reader
Mit dem WLAN kann man sich verbinden und es öffnet sich ein neues Fenster. Dort kann man seine WLAN Daten eingeben, sowie seine MQTT Settings.
Verwendete Hardware:1 x RC522 RFID Reader - https://de.aliexpress.com/item/Free-Shipping-RFID-module-RC522-Kits-S50-13-56-Mhz-6cm-With-Tags-SPI-Write-Read/32523771442.html (https://de.aliexpress.com/item/Free-Shipping-RFID-module-RC522-Kits-S50-13-56-Mhz-6cm-With-Tags-SPI-Write-Read/32523771442.html)
1 x Wemos D1 mini - https://de.aliexpress.com/item/D1-mini-V2-Mini-NodeMcu-4M-bytes-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266/32688079351.html (https://de.aliexpress.com/item/D1-mini-V2-Mini-NodeMcu-4M-bytes-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266/32688079351.html)
3 x Push Buttons - https://www.amazon.de/gp/product/B06XCSB9N3 (https://www.amazon.de/gp/product/B06XCSB9N3)
1 x DC Einbaubuchse - https://www.ebay.de/itm/DC-Einbaubuchse-für-Hohlstecker-2-1x5-5mm-DC-Buchse-einbau-Kupplung-Steckdose/271356348957 (https://www.ebay.de/itm/DC-Einbaubuchse-f%C3%BCr-Hohlstecker-2-1x5-5mm-DC-Buchse-einbau-Kupplung-Steckdose/271356348957)
6 x Einpressmutter - https://de.aliexpress.com/item/100-teile-los-messingeinsatz-M3-4-OD-4-2-Durch-gewinde-messing-gewindebuchse-r-ndelmuttern-f/32837949576.html (https://de.aliexpress.com/item/100-teile-los-messingeinsatz-M3-4-OD-4-2-Durch-gewinde-messing-gewindebuchse-r-ndelmuttern-f/32837949576.html)
6 x M3x30 Senkkopf-Schrauben - https://www.ebay.de/itm/M3-DIN-7991-Senkschrauben-Innensechskant-A2-V2A-Edelstahl-Senkkopf-Schrauben-M3x/222809358688 (https://www.ebay.de/itm/M3-DIN-7991-Senkschrauben-Innensechskant-A2-V2A-Edelstahl-Senkkopf-Schrauben-M3x/222809358688)
UpdatesNeue Firmware "RFID_Buttons_WLAN_LongPressed_v1.2":
- Long-press Unterstützung für die Knöpfe
- Automatischer Reconnect zum MQTT Server
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.3":
- Watchdog
- Versionsnummer über MQTT
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.4":
- Unterstützung für Username und Passwort für MQTT
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.5":
- Vollständige Unterstützung für MQTT Einstellungen: IP, Port, Username, Passwort, Devicename
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.6":
- Reset auf Werkseinstellungen (Wifi + MQTT) durch gleichzeitiges Drücken und Halten aller 3 Buttons für mehr als 5 Sekunden
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.7":
- neues MQTT Reading für die WLAN Signalstärke: /RFID_Reader/wifi_rssi:.* RSSI
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.8":
- Integration einer LED an D0 die kurz Aufblinkt wenn ein RFID Chip erkannt wurde
Das Gehäuse ist jetzt bei Thingiverse verfügbar: https://www.thingiverse.com/thing:3391491
Interessant 8)
Fehlt aber noch die Verbindung der beiden Teile untereinander.
Am RF-Reader ist es noch recht einfach, aber am Wemos muß man schon die nehmen, die im Sketch dafür vorgesehen sind.
Oder habe ich oben was überlesen?
Zitat von: gloob am 12 Januar 2019, 18:56:40
Aktuell habe ich einen RFID Reader (RC522) mit einem Wemos (Wemos D1 mini) gekoppelt und einen Sketch aufgespielt, der die IDs der Karten per MQTT an FHEM überträgt.
Das geht stark in Richtung des "Toniebox" Nachbaus (https://forum.fhem.de/index.php/topic,95552.0.html) ;). Im Übrigen kann die "große" HM-UART Platine das auch, einer der I2C Steckverbinder hat exakt die Steckerbelegung des RFID Readers.
Gruß Peter
Zitat von: Neuhier am 12 Januar 2019, 19:26:56
Interessant 8)
Fehlt aber noch die Verbindung der beiden Teile untereinander.
Am RF-Reader ist es noch recht einfach, aber am Wemos muß man schon die nehmen, die im Sketch dafür vorgesehen sind.
Oder habe ich oben was überlesen?
Kommt auch noch. Keine Sorge.
Zitat von: PeMue am 12 Januar 2019, 20:07:38
Das geht stark in Richtung des "Toniebox" Nachbaus (https://forum.fhem.de/index.php/topic,95552.0.html) ;).
Gruß Peter
Ja genau sowas ähnliches soll es werden.
Zitat von: PeMue am 12 Januar 2019, 20:07:38
Im Übrigen kann die "große" HM-UART Platine das auch, einer der I2C Steckverbinder hat exakt die Steckerbelegung des RFID Readers.
Ich möchte mir gerne eine zusätzliche Platine sparen. Soll relativ klein werden im Gehäuse. Aber gut zu wissen, dass es auch so geht. Hab die Platine ja eh noch von dir hier liegen. Vielleicht nehme ich sie doch.
Welche Bibliotheken müssen vorhanden sein?
Außer dem "Standart" für ESP8266 noch mindestens MQTTClient, SPI, MFRC522 welche noch?
Bekomme hier jede Menge Fehler, wenn ich das kompilieren will.
Letzter: no matching function for call to 'MQTTClient::begin(const char*&, WiFiClient&)'
Steht aber auch nix dazu im orignalen Thread bei lazyzero.
Dort ist aber die Verkabelung beschrieben.
So, ich wieder.
Die fehlenden Bibliotheken stehen im Sketch.
Ist ganz einfach, wenn man das merkt.
Alle nachgeladen, ohne Fehler kompiliert, nun weiter im Text.....
Ja gerade die Quelle für MQTT hatte ich mit hinzu gefügt.
Laut MQTTfx kommt jede Menge an, aber ich bekomme das im FHEM einfach nicht hin, daß das angezeigt/ registriert wird.
Nehme aber MQTT, nicht MQTT2, weil ich damit nicht zu Passe komme.
List Device
Internals:
CFGFN
DEF
IODev MQTTs
NAME MQTTRFID
NOTIFYDEV 192.168.78.64
NR 7116
STATE ???
TYPE MQTT_DEVICE
OLDREADINGS:
READINGS:
2019-01-13 19:48:16 transmission-state unsubscription acknowledged
message_ids:
publishSets:
sets:
subscribe:
/rfid_reader:.*
subscribeExpr:
^\/rfid_reader:.*$
subscribeQos:
/rfid_reader:.* 0
subscribeReadings:
/rfid_reader:.*:
cmd
name .*
Attributes:
IODev MQTTs
oldreadings /rfid_reader/uid
room Steuerung
userReadings /rfid_reader/bat /rfid_reader/uid
List Notify
Internals:
CFGFN
DEF MQTTRFID:.* set Deckenleuchte on-for-timer 5
NAME MQTTRFID_ntfy
NOTIFYDEV MQTTRFID
NR 7202
NTFY_ORDER 50-MQTTRFID_ntfy
REGEXP MQTTRFID:.*
STATE active
TRIGGERTIME 1547405296.55547
TYPE notify
READINGS:
2019-01-13 19:50:45 state active
Attributes:
room Steuerung
Ich bin jetzt einen Schritt weiter. Ich habe noch 3 Buttons hinzugefügt für Events:
Previous / Leiser
Pause
Next / Lauter
Die Events dafür laufen natürlich dann auch über MQTT.
Das Gehäuse ist auch im entstehen. Ein erster Prototyp der Oberseite ist gemacht und nimmt die Buttons auf sowie den eigentlichen RFID Reader. Der Wemos kommt in die untere Schale und auf die Rückseite kommt eine DC Einbaubuchse für die Stromversorgung.
Das Gehäuse nimmt jetzt langsam Formen an. Die Teile sind konstruiert und es geht an den zweiten Druck.
Die Stromversorgung erfolgt über einen Hohlstecker auf der Rückseite, ist mechanisch deutlich stabiler als die USB Buchse am Wemos.
Beim ersten Test mal waren leider die Löcher für die Buttons zu klein.
Der Druck lief gut und die Teile passen auch alle super rein.
Jetzt fehlt nur noch das verdrahten und Einpressen der Gewinde für die Schrauben.
Die Daten sind jetzt auch bei Thingiverse wenn jemand den Reader nachbauen möchte: https://www.thingiverse.com/thing:3391491
Hi,
Sehr cool! Hast Du auch Bauteillisten?
Insbesondere welche Einpressmuttern verwendest Du?
Gruß Arnd
Gesendet von iPhone mit Tapatalk
Die verwendeten Teile sind bei Thingiverse aufgelistet. Ich kann aber gerne auch hier nochmal eine Liste machen.
Ich hab die Hardware im ersten Post hier hinzugefügt.
Tja, der Arndt stellt halt die richtigen Fragen ! 8)
Aber trotzdem noch mal ne dumme Frage: Wie presst Du diese ein ?
https://de.aliexpress.com/item/100-teile-los-messingeinsatz-M3-4-OD-4-2-Durch-gewinde-messing-gewindebuchse-r-ndelmuttern-f/32837949576.html
-heißmachen und drücken, oder ...
Grüße
Martin
Zitat von: Ranseyer am 30 Januar 2019, 15:19:53
Aber trotzdem noch mal ne dumme Frage: Wie presst Du diese ein ?
https://de.aliexpress.com/item/100-teile-los-messingeinsatz-M3-4-OD-4-2-Durch-gewinde-messing-gewindebuchse-r-ndelmuttern-f/32837949576.html
-heißmachen und drücken, oder ...
Ich schraube sie auf eine Schraube und mache sie mit einem Feuerzeug heiß und drücke sie dann einfach in den Kunststoff. Der schmilzt dabei und härtet beim Abkühlen wieder aus und somit sitzt der Einsatz bombenfest. Die gleiche Teile nutze ich auch bei meinem MapleCUN Gehäuse.
OK-ey... :o
Danke für die Info. Dann bräuchte ich auch keine M4 Schrauben "reinmurksen" ... 8)
Hab vorher schon mal eine Satz deiner Wunderteile bestellt...
So sieht das Einpressen dann in Hardware aus.
Manchmal sieht man auch bei Youtube wie man es mit einem Lötkolben machen kann. Ich finde es nicht gut, man hat keine Kontrolle über die Hitze und kann nicht gut justieren.
Der Funktionstest nach dem Verkabeln und Zusammenbau war auch erfolgreich.
defmod MQTT2_RFID MQTT2_DEVICE
attr MQTT2_RFID IODev MQTT2
attr MQTT2_RFID readingList /rfid_reader/uid:.* UID\
/rfid_reader/button1:.* Button1\
/rfid_reader/button2:.* Button2\
/rfid_reader/button3:.* Button3
attr MQTT2_RFID room MQTT
setstate MQTT2_RFID 2019-01-30 20:38:29 Button1 pressed
setstate MQTT2_RFID 2019-01-30 20:38:33 Button2 pressed
setstate MQTT2_RFID 2019-01-30 20:38:25 Button3 pressed
setstate MQTT2_RFID 2019-01-30 20:38:21 UID b977c756
Die aktuelle Firmware ist jetzt auch im ersten Post
Zitat von: gloob am 18 Januar 2019, 20:18:08
Ich bin jetzt einen Schritt weiter. Ich habe noch 3 Buttons hinzugefügt für Events:
Previous / Leiser
Pause
Next / Lauter
Die Events dafür laufen natürlich dann auch über MQTT.
Das Gehäuse ist auch im entstehen. Ein erster Prototyp der Oberseite ist gemacht und nimmt die Buttons auf sowie den eigentlichen RFID Reader. Der Wemos kommt in die untere Schale und auf die Rückseite kommt eine DC Einbaubuchse für die Stromversorgung.
Hallo,
ich selbst habe bereits ein sehr gut funktionierendes Phoniebox-Radio. Hier habe ich Arcade-Buttons mit Microschaltern für Play, Pause, Stop, Track back / prev, Vol +/- verbaut. Dafür habe ich einfach Jumperkabel mit Flachsteckhülsen versehen und auf die GPIO-Pins aufgesteckt. Im Bild sieht das so aus, als ob du das hier auch so gemacht hast. Allerdings wüsste ich nicht, woher ich passende Steckschuhe in diesem Format bekommen könnte. Sind das überhaupt welche oder sieht das nur so aus? Falls ja, könntest du bitte einen Einkaufslink schicken?
Danke & Gruß
Trixer
Ich habe die Kabel direkt an die Buttons angelötet und den Lötstelle mit Schrumpfschlauch überzogen.
Wie hast du den RFID reader, den Wemos und die Buttons verkabelt?
Könntest du dir vorstellen deinen sketch mit einem deepsleep für den Akkubetrieb zu erweitern?
Ich gebe zu, dass ich es mir mal wieder leicht machen will.
Ich habe es mit einem NodeMCU versucht aber nur einen sketch ohne buttons im Netz gefunden. Daher möchte ich gerne auf dein Projekt umswitchen.
https://forum.fhem.de/index.php/topic,96250.msg892213.html#msg892213 (https://forum.fhem.de/index.php/topic,96250.msg892213.html#msg892213)
Deepsleep wird nicht funktionieren. Woher soll der Reader wissen, wann er auf wachen soll. Außerdem verbrauchen der RFID Reader und WLAN zu viel Strom, als das man es sinnvoll mit Akku betreiben könnte.
Einen "Schaltplan" kann ich nachher mal erstellen und hoch laden.
Deepsleep einzubauen ist aber kein Hexenwerk:
/**
* An example showing how to put ESP8266 into Deep-sleep mode
*/
void setup() {
Serial.begin(115200);
Serial.setTimeout(2000);
// Wait for serial to initialize.
while(!Serial) { }
Serial.println("I'm awake.");
Serial.println("Going into deep sleep for 20 seconds");
ESP.deepSleep(20e6); // 20e6 is 20 microseconds
}
void loop() {
}
Wieso sollte deepsleep nicht gehen?
Einen Button zum aufwecken oder alle x (attr über FHEM, default 60) Sekunden nach rfid oder FHEM Befehl schauen. Toniebox ist doch auch Akku betrieben.
Gruß Arnd
Gesendet von iPhone mit Tapatalk
Soviel ich verstanden habe benötigt der ESP8266 ein High Signal an RST zum Aufwecken. Damit startet der ESP dann aber neu. Somit lässt sich der ESP nicht über die Steuerungsbuttons aufwecken weil jede Betätigung einen Neustart auslösen würde.
Den Stromverbrauch ohne Deepsleep habe ich getestet. 14,5 Stunden hält eine 2200 mah Powerbank bei mir mit NOdeMCU und RFID.
Ich habe das Gerät jetzt abgeschlossen und den ersten Post aktualisiert.
Falls jemand Interesse hat, gibt es auch einen im Marktplatz zu erwerben.
Danke für deine tolle Anleitung.
Hattest du schon Zeit den Schaltplan zu erstellen?
Wie machst du das mit der Mehrfachbelegung der Buttons? Ich habe mir den sketch angesehen und kein ,,longpress" gefunden. Ich vermute FHEM übernimmt das. Wäre es nicht besser das im sketch zu verarbeiten und dann z.B. ein ,,longpressrelease" zu senden um das senden zu minimieren?
Ich verstehe nicht viel davon. Ich will hier keine negative Kritik üben.
Meinst du ich kann deinen Sketch wenn ich es mal irgendwann geschnallt habe um einen vierten Button erweitern, oder sind die verfügbaren Pins alle belegt?
Vielen Dank.
Zitat von: willib am 29 April 2019, 13:17:07
Danke für deine tolle Anleitung.
Hattest du schon Zeit den Schaltplan zu erstellen?
Wie machst du das mit der Mehrfachbelegung der Buttons? Ich habe mir den sketch angesehen und kein ,,longpress" gefunden. Ich vermute FHEM übernimmt das. Wäre es nicht besser das im sketch zu verarbeiten und dann z.B. ein ,,longpressrelease" zu senden um das senden zu minimieren?
Ich verstehe nicht viel davon. Ich will hier keine negative Kritik üben.
Meinst du ich kann deinen Sketch wenn ich es mal irgendwann geschnallt habe um einen vierten Button erweitern, oder sind die verfügbaren Pins alle belegt?
Vielen Dank.
Den Schaltplan kann ich nachher mal machen. Bisher bin ich noch nicht dazu gekommen. Ob noch ein Pin frei ist, kann ich dabei mal schauen.
LongPress wird aktuell nicht unterstützt.
"Schaltplan" habe ich im ersten Post mit angehängt.
An D0 könnte man noch einen Button hängen.
Long Press könnte man relativ einfach integrieren. Habe ich bei mir allerdings nicht, weil das Kind auch gerne mal zu lange drauf drückt :)
Ich habe eine Version für "Long Pressed" bei den Buttons 1-3 im ersten Post hinzugefügt, allerdings ist das ganze ungetestet.
10ms < Tastendruck < 2000ms: pressed
Tastendruck >= 2000ms: long pressed
Pro Tastendruck sollte es nur ein Event geben.
Danke für das long pressed.
Ich versuche gerade es zu testen bekomme aber keine Informationen in FHEM.
Kannst du bitte ein list vom MQTT2_Device posten? Mich interessiert besonders das Topic.
Dankeschön
Steht doch im ersten Post.
Bekommst du irgendwelche Ausgaben auf der Arduino Console?
Mein List sieht so aus
Internals:
CFGFN
DEVICETOPIC MQTT2_RFID
FUUID 5ccb48eb-f33f-7452-a00e-1f1c47ac1b16ae80
IODev MQTT2_SERVER
NAME MQTT2_RFID
NR 611
STATE ???
TYPE MQTT2_DEVICE
Attributes:
IODev MQTT2_SERVER
readingList /rfid_reader/uid:.* UID
/rfid_reader/button1:.* Button1
/rfid_reader/button2:.* Button2
/rfid_reader/button3:.* Button3
room MQTT2_DEVICE
Ich vermute ich muss das Device_Topic anpassen, weil es sich nicht mit dem deckt was der wemos published.
Ich arbeite mit Platform IO. Die Ausgabe auf der Konsole habe ich gestern nicht zum laufen bekommen. Ich glaube das heißt serial monitor bei PIO. Das schaue ich mir heute nochmal an.
Der sketch wurde aber ohne Fehler übertragen und die Anmeldung im WLAN hat auch funktioniert.
Zitat von: willib am 03 Mai 2019, 09:58:04
Mein List sieht so aus
Internals:
CFGFN
DEVICETOPIC MQTT2_RFID
FUUID 5ccb48eb-f33f-7452-a00e-1f1c47ac1b16ae80
IODev MQTT2_SERVER
NAME MQTT2_RFID
NR 611
STATE ???
TYPE MQTT2_DEVICE
Attributes:
IODev MQTT2_SERVER
readingList /rfid_reader/uid:.* UID
/rfid_reader/button1:.* Button1
/rfid_reader/button2:.* Button2
/rfid_reader/button3:.* Button3
room MQTT2_DEVICE
Ich vermute ich muss das Device_Topic anpassen, weil es sich nicht mit dem deckt was der wemos published.
Ich arbeite mit Platform IO. Die Ausgabe auf der Konsole habe ich gestern nicht zum laufen bekommen. Ich glaube das heißt serial monitor bei PIO. Das schaue ich mir heute nochmal an.
Der sketch wurde aber ohne Fehler übertragen und die Anmeldung im WLAN hat auch funktioniert.
Die Topics werden so im Sketch gepublished:
mqtt.publish("/rfid_reader/button1", "pressed");
Sollte also zu dem passen was du im Device hast. Hast du beim Anmelden im WLAN auch die IP deines MQTT Servers angepasst?
Ist es denn egaIst es denn egal was im DeviceTopic steht, wenn readinglist die richtigen topics aboniert?
,,MQTT2_RFID" hat ja an sich nichts mit dem gepublischten aus dem sketch zu tun.
Die MQTT Einstellungen habe ich beim Start zusammen mit dem WLAN angepasst. Kann ich diese Einstellungen nochmal einsehen oder Ändern? Oder flashe ich einfach neu?
Wenn du die Einstellungen nochmal ändern willst, musst du entweder neu flashen oder dein WLAN kurz abschalten, so dass er nochmal den Hotspot aufbaut.
Es gibt auch Tools um sich alle Topics vom MQTT Server anzusehen. Dann sieht man ob/was rein kommt.
Danke. Es funktioniert jetzt. Der Flashspeicher muss komplett gelöscht werden sonst merkt er sich die WIFI Settings. Habe danach neu geflasht und die WIFI und MQTT Einstellungen gemacht.
Dummerweise verliert das Device nach spätestens 5 Minuten die Verbindung zum MQTT2 Server. Dann kommt wieder nichts mehr an.
Einen vierten Button an D0 habe ich auch hinbekommen. Leider klappt hier nur einmalig long pressed und dann nichts mehr. Ich denke der Pin geht nach dem Drücken nicht in den Ausgangszustand zurück. Hier brauche ich wohl noch einen Pullup Widerstand!?
Auch habe ich festgestellt dass manchmal ein zufälliger button press kommt nachdem ich USB neu angeschlossen habe.
Was für eine Hardware benutzt du denn? Auch einen Wemos?
Wie hast du den 4. Button denn aktiviert? Kannst du mal den Sketchausschnitt zeigen. Man kann einen PullUp beim Anlegen der Buttons im Sketch aktivieren.
Das 5 Minuten Problem teste ich gerade. Möglicherweise muss man den Wemos alle 4 Minuten mal anpingen, damit er nicht die Verbindung verliert.
Im Moment habe ich aber nach mehr als 5 Minuten einen Button gedrückt und der ist sofort in FHEM angekommen.
Auch ein Senden nach 10 Minuten Inaktivität funktioniert ohne Probleme, kein zyklisches anpingen notwendig.
Die USB Verbindung vom Wemos nutze ich nur zum Flashen. Danach versorge ich meine Box über einen Hohlstecker mit 5V und GND.
Ich nutze auch einen Wemos D1.
Ich habe nur deinen Code jeweils um Button4 erweitert.
#define BUTTON_PIN_4 D0
Und dann an jeder Stelle im sketch wo Buttons vorkommen Button3 kopiert und auf 4 geändert. Soweit ich weiß hat D0 keinen internen Pullup.
Ich habe auch weiter getestet. Zuletzt waren es 18 Minuten. Der MQTT2 Server zeigt dann auch einen verbundenen client weniger an. In meinem Fall 0.
Ich plane den Wemos an einem USB Netzteil zu betreiben. Mal sehen...
Aktuell steigt meiner auch an und an aus. Ich werde jetzt mal testen ob ich es mit einem zyklischen Pingen verhindern kann.
Die WLAN Verbindung scheint es nicht zu sein, die verloren geht. Ich habe jetzt folgendes in die Main Loop vom Sketch eingefügt und teste weiter:
// check if mqtt connection got lost
if (!mqtt.connected())
{
mqtt.connect(mqtt_device_name, mqtt_user, mqtt_pass);
}
Ich denke das sollte dann reichen in Verbindung mit dem zyklischen anpingen des Wemos.
Der Reader gibt jetzt auch aus warum er neugestarte hat:
ResetReason Power on 2019-05-05 08:19:32
Ich vemute es hat was mit dem MQTT2 Server zu tun.
Laut commandref gibt es das atrribut keepaliveFactor
keepaliveFactor
the oasis spec requires a disconnect, if after 1.5 times the client supplied keepalive no data or PINGREQ is sent. With this attribute you can modify this factor, 0 disables the check. Notes:
dont complain if you set this attribute to less or equal to 1.
MQTT2_SERVER checks the keepalive only every 10 second.
Dieser PINGREQ müsste also vom RFID reader gesendet werden.
Die ganzen Sonoff und Shelly, und wie sie alle heißen, arbeiten doch auch mit einem ESP8266. Es müsste doch einen Codeschnipsel geben der die Verbindung zum MQTT Server konstant hält.
Das reconnect was ich im post oben drüber gepostet habe, hat funktioniert. Lasse es jetzt nochmal über Nacht laufen und lade dann die neue Firmware hoch
Cool, danke. Geht es dann ohne anpingen? Wenn nicht, wie genau machst du das?
Ich möchte das Sonos im Kinderzimmer gerne außer Reichweite haben. Die Kinder sollen das nur über deinen RFID Reader bedienen. Daher muss etwas zuverlässig funktionieren. Ich teste aber gerne weiter. Nochmal Danke dass du hier alles teilst.
Ich habe die neue Version gestern früh aufgespielt und heute früh lief er immer noch ohne Probleme. Die neue Version ist jetzt also im ersten Post verfügbar.
Das anpingen scheint nicht notwendig zu sein.
Neue Firmware im Startpost:
1. Watchdog Counter der jede Minute eine MQTT Nachricht schickt um WLAN und MQTT aufrecht zu erhalten
2. Reading für die Firmware Version
Hallo zusammen
Wäre es möglich die Buttons zu deaktivieren oder gar nicht zu verbauen? Würde es ohne die Knöpfe keine Probleme mit der Firmware geben?
Meine Kinder drücken nur darauf rum....
Gesendet von iPad mit Tapatalk
Du kannst die Buttons einfach weg lassen. Da passiert nichts. In der Firmware muss nichts angepasst werden.
Du kannst aber auch die Buttons verbauen und aber in FHEM nicht auf die Events reagieren. Du kannst ja selbst entscheiden wie und ob du auf die Button Events reagierst.
Ein vierter Button an D0 funktioniert hervorragend mit Pull-up Widerstand. Jetzt muss ich nur noch überlegen was der machen soll. ::)
Mein 4,5 Jähriger hat die Doppelbelegung der Buttons schon verinnerlicht.
Button1 short:play/pause long:Sonos Gruppieren/Gruppierung aufheben
Button2 short:leiser long:zurück
Button3 short:lauter long:weiter
Button3 short:lauter long:weiter
Button4 short:nanoleaf an/aus? long:nanoleaf nächste scene?
Bei mir funktioniert v1.2 bereits zuverlässig.
Daumen hoch für dein Projekt!
Was vielleicht noch interessant wäre: Ein Publish wenn die Figur vom reader herunter genommen wird.
Zitat von: willib am 17 Mai 2019, 11:53:33
Button2 short:leiser long:zurück
Button3 short:lauter long:weiter
Ich würde ja lauter/leiser auf den Longpress legen und zurück/weiter auf short. So kann es nicht passieren, dass wenn man weiter will, aus Versehen lauter gemacht wird.
Ich glaube man macht auch öfter mal vor und zurück anstatt die Lautstärke zu ändern.
Guter Punkt. Das ändere ich noch. Dann wird es auch nicht lauter wenn man mal versehentlich den Knopf berührt.
Meine Kiste soll unter einem Regalbrett auf Kinderhöhe hängen.
Zitat von: willib am 17 Mai 2019, 12:46:00
Dann wird es auch nicht lauter wenn man mal versehentlich den Knopf berührt.
Dafür könnte man noch die "Debounce" Zeit in der Firmware ändern, dass ein Knopf mindestens 200-300ms gedrückt sein muss um als "short" erkannt zu werden.
Long wäre dann alles >1000ms.
Zitat von: gloob am 12 Januar 2019, 18:56:40
Beim Starten des Gerätes spannt es ein eigenes WLAN auf: RFID_Reader
Mit dem WLAN kann man sich verbinden und es öffnet sich ein neues Fenster. Dort kann man seine WLAN Daten eingeben, sowie seine MQTT Settings.
Ok. Inzwischen habe ich (vermutlich) kapiert, dass die unbeschrifteten Felder unter den WLAN Daten wohl die Adresse des MQTT Server und sein Port sind.
Aber wo um alles in der Welt kann ich denn User und Passwort für die Verbindung zum MQTT Server eintragen?
Zitat von: betateilchen am 23 Mai 2019, 12:30:34
Ok. Inzwischen habe ich (vermutlich) kapiert, dass die unbeschrifteten Felder unter den WLAN Daten wohl die Adresse des MQTT Server und sein Port sind.
Aber wo um alles in der Welt kann ich denn User und Passwort für die Verbindung zum MQTT Server eintragen?
Du findest jetzt aber auch alle Bottlenecks und Fehler.
Die beiden Optionen "User" und "Passwort" gibt es aktuell noch nicht, da ich sie nicht benötigt habe. Ich guck mal, dass ich sie in die Firmware mit aufnehme. Leider müsstest du dann die Firmware neu auf das Gerät flashen.
*grmpf* Benutzerauthentifizierung ist nun wirklich kein Bottleneck, sondern eine wichtige Grundfunktionalität. Wer benutzt denn heute noch ungesicherte Verbindungen? Ohne User und Passwort kann ich mit dem Ding nix anfangen.
Achja - funktioniert denn wenigstens SSL zum MQTT Server, oder geht das auch noch nicht?
Vielleicht solltest Du den Reader nochmal neu anbieten, wenn er wirklich brauchbar ist.
Im Moment ist das hier nur ein ziemlich teurer Briefbeschwerer. Nimmst Du den eventuell zurück?
Zitat von: betateilchen am 23 Mai 2019, 12:53:41
*grmpf* Benutzerauthentifizierung ist nun wirklich kein Bottleneck, sondern eine wichtige Grundfunktionalität. Wer benutzt denn heute noch ungesicherte Verbindungen? Ohne User und Passwort kann ich mit dem Ding nix anfangen.
Achja - funktioniert denn wenigstens SSL zum MQTT Server, oder geht das auch noch nicht?
Vielleicht solltest Du den Reader nochmal neu anbieten, wenn er wirklich brauchbar ist.
Im Moment ist das hier nur ein ziemlich teurer Briefbeschwerer. Nimmst Du den eventuell zurück?
Du hättest gerne vorher Fragen können was alles geht und was nicht.
Ich bin gerade dabei Username und Passwort in die Firmware einzubauen. Ob SSL Funktioniert, muss ich mir anschauen.
Anbei gibt es eine erste Testversion für das Setzen von Username und Passwort. Ist komplett ungetestet, da ich aktuell kein Gerät hier habe.
Beim Aufspielen muss der Flash wie im Bild gelöscht werden.
Eine getestete Version kann ich heute Abend nachreichen.
Wir sollten jetzt keinen Streit vom Zaun brechen. Im Angebot stand
ZitatIch haben einen RFID Reader mit WLAN und MQTT abzugeben.
Gesicherte Verbindungen sind für mich bei MQTT genau so selbstverständlich wie bei der WLAN Verbindung.
Zitat von: gloob am 23 Mai 2019, 13:03:11
Anbei gibt es eine erste Testversion für das Setzen von Username und Passwort.
Danke für Deine Bemühungen.
Zitat von: gloob am 23 Mai 2019, 13:03:11
Ist komplett ungetestet, da ich aktuell kein Gerät hier habe.
Und ich habe aktuell keine Möglichkeit zum Flashen von Firmware.
Neue Firmware im ersten Post (v1.4), Unterstützung für Username und Passwort des MQTT Servers wurde hinzugefügt.
Bitte alle Daten beim Einbinden ins WLAN richtig eingeben!
Tipp: lass die default-Werte für den mqtt-server und den port weg (bzw. setze sie auf ""), dann sieht man in den Eingabefeldern sofort, wofür sie gedacht sind.
Naja nen bisschen mitdenken muss man beim Einrichten schon. Zumindest der Port ist der Default für MQTT.
Ich überleg mir auch noch was zum Reset der Einstellungen.
So nochmal neue Version mit vollständiger Unterstützung für MQTT:
- IP
- Port
- Benutzername
- Passwort
- Device Name
Zitat von: gloob am 23 Mai 2019, 19:16:56
Naja nen bisschen mitdenken muss man beim Einrichten schon. Zumindest der Port ist der Default für MQTT.
Das hat überhaupt nichts mit fehlendem Mitdenken zu tun, ganz im Gegenteil! Bei dem Reader, den Du mir geschickt hattest, war als port 8080 vorgegeben und das ist in meinem Verständnis ein "default" port für http Verbindungen. Deshalb hatte ich ewig versucht, eine nicht vorhandene Web-Oberfäche des Readers zu erreichen, um eine MQTT Verbindung konfigurieren zu können 8)
Als "Standard" für MQTT würde man eher 1883 als Vorgabe erwarten, dann wäre auch schneller klar, was man da eintragen soll.
Folgende Default Werte sind jetzt eingetragen:
- char mqtt_server[40] = "192.168.1.15";
- char mqtt_port[6] = "1883";
- char mqtt_device_name[40] = "RFID_Reader";
- char mqtt_user[40] = "username";
- char mqtt_pass[40] = "password";
Bei mir funktionieren auf einem nackten Wemos D1 mini weder die Version 1.4 noch die 1.5.
Die letzte Version, die mir tatsächlich Ergebnisse per MQTT liefert, ist die Version 1.3 von gestern, bei der man Username und Password fest verdrahtet im Code vorgibt.
Zitat von: betateilchen am 24 Mai 2019, 12:26:31
Bei mir funktionieren auf einem nackten Wemos D1 mini weder die Version 1.4 noch die 1.5.
Die letzte Version, die mir tatsächlich Ergebnisse per MQTT liefert, ist die Version 1.3 von gestern, bei der man Username und Password fest verdrahtet im Code vorgibt.
Komisch, gestern hattest du noch nicht einmal die Möglichkeit die Firmware auf einen Wemos aufzuspielen. ;)
Was läuft denn nicht? Wie sieht die Ausgabe in der Console aus? Gibt es Fehlermeldungen?
Wie testest du ob Daten über MQTT ankommen?
Stimmt der Device Name?
Zitat von: betateilchen am 24 Mai 2019, 12:26:31
Bei mir funktionieren auf einem nackten Wemos D1 mini weder die Version 1.4 noch die 1.5.
Die letzte Version, die mir tatsächlich Ergebnisse per MQTT liefert, ist die Version 1.3 von gestern, bei der man Username und Password fest verdrahtet im Code vorgibt.
das klingt für mich nach ner falschen Einstellung in der IDE.
Ich hatte auch das Problem dass keine Einstellungen gespeichert wurden. allerdings bei der ESP Wetterstation.
Ursächlich war am Ende die falsche Speicherkonfiguration beim flashen. Ich hatte schlicht keinen SPIFFS konfiguriert.
prüfe das doch nochmal.
Zitat von: gloob am 24 Mai 2019, 12:48:39
Komisch, gestern hattest du noch nicht einmal die Möglichkeit die Firmware auf einen Wemos aufzuspielen. ;)
Stimmt. Gestern hatte ich die Möglichkeit auch nicht. Daran ist überhaupt nix komisch.
Zitat von: gloob am 24 Mai 2019, 12:48:39
Was läuft denn nicht? Wie sieht die Ausgabe in der Console aus? Gibt es Fehlermeldungen?
V1.3 liefert:
mounting FS...
mounted file system
reading config file
opened config file
parsed json
*WM: Adding parameter
*WM: server
*WM: Adding parameter
*WM: port
*WM: Adding parameter
*WM: device_name
*WM:
*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Using last saved values, should be faster
*WM: Connection result:
*WM: 3
*WM: IP Address:
*WM: 192.168.123.68
wifi connected
setup buttons
setup mqtt
setup rfid
*WM: freeing allocated params!
V1.5 liefert:
mounting FS...
mounted file system
reading config file
opened config file
parsed json
*WM: Adding parameter
*WM: server
*WM: Adding parameter
*WM: port
*WM: Adding parameter
*WM: user
*WM: Adding parameter
*WM: pass
*WM: Adding parameter
*WM: device_name
*WM:
*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Using last saved values, should be faster
*WM: Connection result:
*WM: 3
*WM: IP Address:
*WM: 192.168.123.68
wifi connected
setup buttons
setup mqtt
MQTT IP: 192.168.xx.xx
MQTT Port: 1883
MQTT device name: RFID_Reader
MQTT user name: xxx
MQTT password: xxx
setup rfid
*WM: freeing allocated params!
Die MQTT Daten user,pass,ip werden im Log korrekt ausgegeben, die xxx sind von mir.
Zitat von: gloob am 24 Mai 2019, 12:48:39
Wie testest du ob Daten über MQTT ankommen?
Gegen einen mosquitto Server. In FHEM ein MQTT_DEVICE gegen den gleichen mosquitto, das Device wird mit V1.3 problemlos mit Daten versorgt wird, in V1.5 kommt gar nix an, nichtmal die Versionsdaten beim Starten.
Zitat von: Frank_Huber am 24 Mai 2019, 12:55:55
Ich hatte auch das Problem dass keine Einstellungen gespeichert wurden.
Die Konfigurationsdaten sind alle da, siehe Logs oben. Ausserdem wäre die Einstellung dann auch bei 1.3 falsch, aber wenn ich 1.3 übertrage, tritt das Problem nicht auf.
Wie sieht denn dein MQTT Device in FHEM aus?
In der Version 1.3 gab es noch den Bug, dass der eingestellt Devicename nicht richtig gesetzt wurde für die Messages.
Zitat von: betateilchen am 24 Mai 2019, 13:17:34
Stimmt. Gestern hatte ich die Möglichkeit auch nicht. Daran ist überhaupt nix komisch.
Sorry, aber verarschen kann ich mich alleine.
Du schreibst mir gestern, dass die Firmware bei dir so nicht einsatzfähig ist und du willst den Reader zurück geben. Angeblich kannst du die neue Firmware mit den Fixes für dich, die ich bereit gestellt habe, nicht aufspielen.
Heute kannst du es auf einmal und testest damit.
Immer wieder toll, wenn man seine Arbeit hier mit dem Forum teilt.
Wieso verarschen?
Zitat von: gloob am 24 Mai 2019, 13:22:21
Du schreibst mir gestern, dass die Firmware bei dir so nicht einsatzfähig ist und du willst den Reader zurück geben. Angeblich kannst du die neue Firmware mit den Fixes für dich, die ich bereit gestellt habe, nicht aufspielen.
Nochmal: gestern konnte ich das auch nicht, deshalb hatte ich auch geschrieben:
Zitat von: betateilchen am 23 Mai 2019, 13:16:13
Und ich habe aktuell keine Möglichkeit zum Flashen von Firmware.
Dass ich die Möglichkeit heute haben würde, war gestern auch noch nicht absehbar, aber das nur nebenbei angemerkt.
Zitat von: gloob am 24 Mai 2019, 13:19:58
Wie sieht denn dein MQTT Device in FHEM aus?
defmod rfid MQTT_DEVICE
attr rfid IODev mqtt_local
attr rfid autoSubscribeReadings /rfid_reader/+
Damit werden die readings resetReason, version und watchdog korrekt angelegt und aktualisiert.
setstate rfid 2019-05-24 13:21:22 resetReason External System
setstate rfid 2019-05-24 13:21:22 transmission-state incoming publish received
setstate rfid 2019-05-24 13:21:22 version v1.3
setstate rfid 2019-05-24 13:21:22 watchdog 1
Mir ging es mit Sicherheit nicht darum, Dich zu ärgern und den Reader unbedingt wieder zurückgeben zu wollen. Deine Arbeit weiß ich durchaus zu schätzen. Meine Hinweise auf V1.4 und 1.5 waren eigentlich lediglich als konstruktive Hilfe gedacht.
Zitatattr rfid autoSubscribeReadings /rfid_reader/+
Da ist dein Fehler.
In der Firmware 1.5 hast du folgende Lognachricht:
MQTT device name: RFID_Reader
Zitat von: betateilchen am 24 Mai 2019, 13:17:34
Die Konfigurationsdaten sind alle da, siehe Logs oben. Ausserdem wäre die Einstellung dann auch bei 1.3 falsch, aber wenn ich 1.3 übertrage, tritt das Problem nicht auf.
OK, das Log zeigt es. da in 1.3 die Daten hardcoded sind kommt 1.3 normalerweise ohne SPIFFS aus. nur so nebenbei bemerkt. ;)
Zitat von: gloob am 24 Mai 2019, 13:32:00
Da ist dein Fehler.
In der Firmware 1.5 hast du folgende Lognachricht:
MQTT device name: RFID_Reader
Danke für den Hinweis. Das war tatsächlich das Problem.
Interessanterweise scheint die Gross-/Kleinschreibung aber nicht an allen Stellen in der mqtt-Verarbeitung relevant zu sein.
Zitat von: Frank_Huber am 24 Mai 2019, 13:33:56
OK, das Log zeigt es. da in 1.3 die Daten hardcoded sind kommt 1.3 normalerweise ohne SPIFFS aus. nur so nebenbei bemerkt. ;)
Die Daten für den MQTT Server und seinen Port sind nicht hardcoded... und die für WLAN auch nicht.
Zitat von: betateilchen am 24 Mai 2019, 13:42:05
Die Daten für den MQTT Server und seinen Port sind nicht hardcoded... und die für WLAN auch nicht.
Wer richtig lesen kann ist klar im Vorteil.
Hattest ja nur von User/Pass geschrieben. mein Fehler. sorry.
Na dann bin ich ja froh, dass es jetzt geht mit der V1.5.
Falls Dich interessiert, wie die Sache mit SSL Verbindungen funktionieren kann, hier ein paar Gedanken dazu.
//#include <WiFiClient.h>
#include <WiFiClientSecure.h>
...
//WiFiClient wifi;
WiFiClientSecure wifi;
1558723239: New connection from 79.xxx.yyy.zzz on port 8883.
1558723240: New client connected from 79.xxx.yyy.zzz as RFID_Reader (p2, c1, k10, u'uuu').
Da mein bei Amazon Web Services laufender mqtt Server ein Zertifikat von letsencrypt benutzt, brauche ich das CA-Zertifikat nicht im Sketch selbst zu hinterlegen.
Problem dabei: Mit dieser Methode funktionieren dann Verbindungen ohne SSL nicht mehr. Man sollte also bei der Konfiguration der mqtt Verbindung noch einen Parameter "use SSL" ergänzen, der dann für eine Entscheidung sorgt, welches WiFiClient Objekt instanziiert bzw. verwendet werden soll. Vermutlich kann man sich nicht darauf verlassen, dass immer nur port 1883 oder 8883 verwendet wird, sonst könnte man die Entscheidung schon am port festmachen.
Neue Firmware im ersten Post.
Durch gleichzeitiges Drücken und Halten der 3 Buttons kann der Reader auf Werkseinstellungen zurück gesetzt werden.
MQTT und Wifi Parameter müssen/können danach neu eingestellt werden.
Hi zusammen,
Vielen Dank für das Projekt, ist für mich wieder ne schöne Idee zum nachbauen. Leider bekomme ich den mqtt Teil nicht hin....
Habe die Firmware problemlos geflasht. Der Wemos ist im Wlan, Die Buttons geben im Serial Monitor auch an, das sie ihren Dienst verrichten. Soweit so gut. (RFID Reader habe ich noch nicht dran, ist noch unterwegs, ist aber vermtl. erstmal o Bedeutung oder?)
Mein MQTT Server läuft auf den Fhem-PI unter Port 1883. User o. Passwort habe ich nicht eingerichtet (ok, sollte man....aber ist jetzt grad so)
Meine anderen mqtt Devices (tasmota und Konsorten) liefern artig ihre messages ab. Sowohl im mqtt-Programm auf dem Mac, als auch in FHEM.
ich habe jetzt schon bei der Einrichtung die Benutzer und PW Felder frei gelassen und auch mal was eingetippt. Den Server und port habe ich korrekt eingegeben. Beide Optionen liefern keine Werte. Auch die Groß / Kleinschreibung bei RFID_Reader / rfid_reader habe ich bei den Subscribes bzw. den Topics jetzt schon verändert. Jetzt sehe ich gerade den Wald vor lauter Bäumen nicht. Wo könnte mein Fehler liegen? Gruß Carsten
Zitat von: CarstenF am 28 Mai 2019, 08:50:36
Hi zusammen,
Vielen Dank für das Projekt, ist für mich wieder ne schöne Idee zum nachbauen. Leider bekomme ich den mqtt Teil nicht hin....
Habe die Firmware problemlos geflasht. Der Wemos ist im Wlan, Die Buttons geben im Serial Monitor auch an, das sie ihren Dienst verrichten. Soweit so gut. (RFID Reader habe ich noch nicht dran, ist noch unterwegs, ist aber vermtl. erstmal o Bedeutung oder?)
Mein MQTT Server läuft auf den Fhem-PI unter Port 1883. User o. Passwort habe ich nicht eingerichtet (ok, sollte man....aber ist jetzt grad so)
Meine anderen mqtt Devices (tasmota und Konsorten) liefern artig ihre messages ab. Sowohl im mqtt-Programm auf dem Mac, als auch in FHEM.
ich habe jetzt schon bei der Einrichtung die Benutzer und PW Felder frei gelassen und auch mal was eingetippt. Den Server und port habe ich korrekt eingegeben. Beide Optionen liefern keine Werte. Auch die Groß / Kleinschreibung bei RFID_Reader / rfid_reader habe ich bei den Subscribes bzw. den Topics jetzt schon verändert. Jetzt sehe ich gerade den Wald vor lauter Bäumen nicht. Wo könnte mein Fehler liegen? Gruß Carsten
Hallo,
Kannst du bitte mal ein Log von der Arduino Console hier rein stellen?
Vielleicht finden wir so den Fehler.
Wenn du kein Username und Passwort für MQTT hast sollten die Felder beim Einrichten der WLAN Verbindung auf jeden Fall leer bleiben.
Hi,
also den ersten Fehler habe ich gefunden. Die voreingestellte IP vom mqtt Server war noch im hochgeladenen Sketch. Meine Änderung ein der Anmeldung hat er nicht übernommen. Das habe ich im Sketch jetzt geändert und meinen Server eingetragen. Hochgeladen. Jetzt wird mir das auch so angezeigt. Kommt aber immer noch nichts. Hier mal die Konsole...
0:08:42.904 -> *WM: Handle root
10:08:48.315 -> *WM: Scan done
10:08:48.315 -> *WM: Ubiqiti
10:08:48.315 -> *WM: -42
10:08:48.315 -> *WM: CelenoInitialAP74057C
10:08:48.315 -> *WM: -56
10:08:48.315 -> *WM: Avantar
10:08:48.315 -> *WM: -60
10:08:48.315 -> *WM: ASUS
10:08:48.315 -> *WM: -62
10:08:48.315 -> *WM: UPC71F8457
10:08:48.315 -> *WM: -65
10:08:48.315 -> *WM: CelenoInitialAPA438A3
10:08:48.315 -> *WM: -66
10:08:48.315 -> *WM: Unitymedia WifiSpot
10:08:48.315 -> *WM: -71
10:08:48.351 -> *WM: FRITZ!Box 7490
10:08:48.351 -> *WM: -74
10:08:48.351 -> *WM: WLAN-317125
10:08:48.351 -> *WM: -92
10:08:48.351 -> *WM: Sent config page
10:09:12.726 -> *WM: WiFi save
10:09:12.726 -> *WM: Parameter
10:09:12.726 -> *WM: server
10:09:12.726 -> *WM: 192.168.1.50
10:09:12.761 -> *WM: Parameter
10:09:12.761 -> *WM: port
10:09:12.761 -> *WM: 1883
10:09:12.761 -> *WM: Parameter
10:09:12.761 -> *WM: user
10:09:12.761 -> *WM:
10:09:12.761 -> *WM: Parameter
10:09:12.761 -> *WM: pass
10:09:12.761 -> *WM:
10:09:12.761 -> *WM: Parameter
10:09:12.761 -> *WM: device_name
10:09:12.761 -> *WM: RFID_Reader
10:09:12.761 -> *WM: Sent wifi save page
10:09:14.763 -> *WM: Connecting to new AP
10:09:14.763 -> *WM: Connecting as wifi client...
10:09:18.437 -> *WM: Connection result:
10:09:18.437 -> *WM: 3
10:09:18.510 -> Should save config
10:09:18.510 -> wifi connected
10:09:18.510 -> saving MQTT config
10:09:18.510 -> failed to open config file for writing
10:09:18.510 -> {"mqtt_server":"192.168.1.50","mqtt_port":"1883","mqtt_user":"","mqtt_pass":"","mqtt_device_name":"RFID_Reader"}setup buttons
10:09:18.510 -> setup mqtt
10:09:18.510 -> MQTT IP: 192.168.1.50
10:09:18.510 -> MQTT Port: 1883
10:09:18.510 -> MQTT device name: RFID_Reader
10:09:18.543 -> MQTT user name:
10:09:18.543 -> MQTT password:
10:09:18.577 -> setup rfid
10:09:32.480 -> button1 pressed
Update: Mist, muß jetzt zur Arbeit. Werde morgen mal weiterfrickeln. Vielen Dank trotzdem schon mal für den Tip. Werde Weiterberichten.
Zitat von: CarstenF am 28 Mai 2019, 10:16:48
Die voreingestellte IP vom mqtt Server war noch im hochgeladenen Sketch. Meine Änderung ein der Anmeldung hat er nicht übernommen.
10:09:18.510 -> failed to open config file for writing
Das dürfte auf ein Konfigurationsproblem Deiner IDE zurückzuführen sein, deshalb wurden Deine eingegebenen Daten nicht gespeichert.
kein SPIFFS eingestellt?
So, mal kurz von der Arbeit,
erstmal mußte ich mal schauen was SPIFFS ist. *schäm* Sei´s drum.
Also der Flash Vorgang hatte reibungslos funktioniert. Dort wurde in der IDE kein Fehler angezeigt. Das Log ist vom Serial Monitor beim (NEU)Start des Wemos.
Wo ich SPIFFS in der IDE einstelle muß ich später, wenn ich wieder zu Hause bin, mal nachschauen. Hatte die Einstelllungen eigentlich so wie im ersten POST von gloob übernommen. Vorher hatte ich auch ein paar ArduinoNanos geflasht, ohne das ich dort irgendwas in Sachen SPIFFS einstellen mußte. Denke mal, es ist nur ne blöde Kleinigkeit die ich übersehe.
Freu mich aber über Eure Hilfe.
Gruß C.
ich bin auch nicht der Profi, aber der SPIFFS ist der Speicher worin Einstellungen gespeichert werden können.
stellst Du zusammen mit der Flash Größe des ESP ein. (ist auch im Screen im ersten Post so sichtbar.)
Zitat von: CarstenF am 28 Mai 2019, 13:00:15
So, mal kurz von der Arbeit,
erstmal mußte ich mal schauen was SPIFFS ist. *schäm* Sei´s drum.
Also der Flash Vorgang hatte reibungslos funktioniert. Dort wurde in der IDE kein Fehler angezeigt. Das Log ist vom Serial Monitor beim (NEU)Start des Wemos.
Wo ich SPIFFS in der IDE einstelle muß ich später, wenn ich wieder zu Hause bin, mal nachschauen. Hatte die Einstelllungen eigentlich so wie im ersten POST von gloob übernommen. Vorher hatte ich auch ein paar ArduinoNanos geflasht, ohne das ich dort irgendwas in Sachen SPIFFS einstellen mußte. Denke mal, es ist nur ne blöde Kleinigkeit die ich übersehe.
Freu mich aber über Eure Hilfe.
Gruß C.
SPIFFS gibt es auch nicht beim Arduino Nano. Das gibt es nur beim ESP/Wemos.
Wie Frank_Huber schon richtig gesagt hat, ist es unter "Flash_Size" einzustellen.
Warum MQTT trotzdem nicht funktioniert können wir gerne danach nochmal anschauen. Eine Verbindung zum MQTT Server kann er allerdings aufbauen, ansonsten würdest du nur Punkte in der Console sehen.
Das beschriebene Verhalten ist mit einem mosquitto reproduzierbar.
Zitat von: gloob am 28 Mai 2019, 09:04:02
Wenn du kein Username und Passwort für MQTT hast sollten die Felder beim Einrichten der WLAN Verbindung auf jeden Fall leer bleiben.
Diese Empfehlung ist vermutlich der Fehler.
Mit Leerstrings in mqtt_user und mqtt_pass wie hier:
Zitat von: CarstenF am 28 Mai 2019, 10:16:48
10:09:18.510 -> {"mqtt_server":"192.168.1.50","mqtt_port":"1883","mqtt_user":"","mqtt_pass":"","mqtt_device_name":"RFID_Reader"}
passiert genau das hier beschriebene: keine Fehlermeldung bezüglich der mqtt-Verbindung, keine Kommunikation. Wobei ich nicht weiter geforscht habe, ob das ein Problem des Servers ist oder ein Problem mit der verwendeten mqtt-Library im Arduino-Sketch. Mein Bauchgefühl geht eher in Richtung Client.
Abhilfe im Sketch: bei leeren Feldern die beiden Variablen mqtt_user und mqtt_pass beim Verbindungsaufbau gar nicht mitgeben oder vor der Übergabe mit irgendwas füllen. Beide Varianten habe ich erfolgreich ausprobiert.
@CarstenF hast Du mal getestet, die vorgegebenen Werte "username" und "passwort" einfach stehenzulassen und zu verwenden? Bei mir funktioniert die Übertragung dann auch bei "allow_anonymous true" auf mosquitto problemlos.
Zitat von: betateilchen am 28 Mai 2019, 18:54:00
Das beschriebene Verhalten ist mit einem mosquitto reproduzierbar.
Diese Empfehlung ist vermutlich der Fehler.
Mit Leerstrings in mqtt_user und mqtt_pass wie hier:
passiert genau das hier beschriebene: keine Fehlermeldung bezüglich der mqtt-Verbindung, keine Kommunikation. Wobei ich nicht weiter geforscht habe, ob das ein Problem des Servers ist oder ein Problem mit der verwendeten mqtt-Library im Arduino-Sketch. Mein Bauchgefühl geht eher in Richtung Client.
Abhilfe im Sketch: bei leeren Feldern die beiden Variablen mqtt_user und mqtt_pass beim Verbindungsaufbau gar nicht mitgeben oder vor der Übergabe mit irgendwas füllen. Beide Varianten habe ich erfolgreich ausprobiert.
@CarstenF hast Du mal getestet, die vorgegebenen Werte "username" und "passwort" einfach stehenzulassen und zu verwenden? Bei mir funktioniert die Übertragung dann auch bei "allow_anonymous true" auf mosquitto problemlos.
Friste mein Dasein immer noch auf der Arbeit :-) Werde aber gleich noch mal ein paar Tests fahren. Danke für den Hinweis.
Gesendet von iPad mit Tapatalk
Zitat von: betateilchen am 28 Mai 2019, 18:54:00
Das beschriebene Verhalten ist mit einem mosquitto reproduzierbar.
Diese Empfehlung ist vermutlich der Fehler.
Mit Leerstrings in mqtt_user und mqtt_pass wie hier:
passiert genau das hier beschriebene: keine Fehlermeldung bezüglich der mqtt-Verbindung, keine Kommunikation. Wobei ich nicht weiter geforscht habe, ob das ein Problem des Servers ist oder ein Problem mit der verwendeten mqtt-Library im Arduino-Sketch. Mein Bauchgefühl geht eher in Richtung Client.
Abhilfe im Sketch: bei leeren Feldern die beiden Variablen mqtt_user und mqtt_pass beim Verbindungsaufbau gar nicht mitgeben oder vor der Übergabe mit irgendwas füllen. Beide Varianten habe ich erfolgreich ausprobiert.
@CarstenF hast Du mal getestet, die vorgegebenen Werte "username" und "passwort" einfach stehenzulassen und zu verwenden? Bei mir funktioniert die Übertragung dann auch bei "allow_anonymous true" auf mosquitto problemlos.
Kann ich so nicht stehen lassen. Ich nutze auch einen Mosquitto Server und habe keinen Benutzernamen und Passwort vergeben. Beim Einrichten des Readers habe ich die Felder leer gemacht/gelassen.
Die Bilder zeigen schön, dass trotzdem die Messages in FHEM ankommen.
Bei allen Versionen vorher, wo man Benutzername und Passwort nicht einstellen konnte, wurde auch ein leerer String genutzt und an die Connect Funktion übergeben.
Ich habe keine Beschwerden darüber bisher gelesen/gehört.
Zitat von: CarstenF am 28 Mai 2019, 19:01:25
Friste mein Dasein immer noch auf der Arbeit :-) Werde aber gleich noch mal ein paar Tests fahren. Danke für den Hinweis.
Gesendet von iPad mit Tapatalk
Zeig doch bitte nochmal ein List von FHEM wenn du zuhause bist.
Kompletter Reset mit neu Einrichten. Nachrichten kommen in FHEM an.
Benutzername und Passwort für MQTT war leer.
Hallo zusammen,
Also erstmal vielen Dank für die Geduld. Es war die Einstellung in Sachen SPIFFS. Habe ich irgendwie übersehen. Blöde. Aber ich dachte mir schon, das es nur eine Kleinigkeit ist. Jetzt Internals:
CFGFN
FUUID 5ceccf50-f33f-4304-a1e7-e7c6eeb534afa166
IODev mqtt
NAME RFID_Reader
NR 466635
STATE ???
TYPE MQTT_DEVICE
OLDREADINGS:
READINGS:
2019-05-28 20:47:28 Button1 long pressed
2019-05-28 20:47:37 Button2 long pressed
2019-05-28 20:47:34 Button3 long pressed
2019-05-28 20:47:37 transmission-state incoming publish received
message_ids:
sets:
subscribe:
/rfid_reader/button1:.*
/RFID_Reader/button1
/RFID_Reader/button2
/RFID_Reader/button3
subscribeExpr:
^\/rfid_reader\/button1:.*$
^\/RFID_Reader\/button1$
^\/RFID_Reader\/button2$
^\/RFID_Reader\/button3$
subscribeQos:
/RFID_Reader/button1 0
/RFID_Reader/button2 0
/RFID_Reader/button3 0
/rfid_reader/button1:.* 0
subscribeReadings:
/RFID_Reader/button1:
cmd
name Button1
/RFID_Reader/button2:
cmd
name Button2
/RFID_Reader/button3:
cmd
name Button3
/rfid_reader/button1:.*:
cmd
name Button1
Attributes:
IODev mqtt
room mqtt
subscribeReading_Button1 /RFID_Reader/button1
subscribeReading_Button2 /RFID_Reader/button2
subscribeReading_Button3 /RFID_Reader/button3
läuft die Sache genau so, wie sie soll. Auch ohne Benutzer und Passwort. (und ja... ich müßte das mal umbauen :-)
Allen Beteiligten noch einen schönen Abend.
Gruß Carsten
Vielen Dank für die Rückmeldung. Gut dass es nicht am Benutzername und Passwort liegt. Hätte mich auch echt gewundert.
Ich habe Fertig!
Nochmal Vielen Dank an gloob!
Mahlzeit zusammen,
Ich scheitere gerade (vermutlich hitzebedingt) an einer Denkaufgabe.
Ich hab den Wemos ordnungsgemäß verkabelt. Buttons dran. Das ganze betrieben mit einer 5 V DC Einbaubuchse. —Funktioniert. Per MQTT werden Meldungen verschickt.
Hänge ich (korrekt verkabelt nach dem Schema) des RFID Reader dran.... Gehts nicht mehr.
Wemos fährt nicht hoch, es leuchtet nur die LED am RFID Reader.
Also RFID Reader getauscht getestet etc. Alles gut. An dem liegt es nicht.
Jetzt gehe ich her und schließe den Wemos per USB an. Läuft ALLES. Sowohl Buttons, als auch der RFID Reader.
Ich komme gerade nicht auf die Lösung. Ich könnte natürlich jetzt mit dem USB Anschluß arbeiten, aber ich habe doch auch das schöne Gehäuse mit Platz für die Buchse. :-)
Jemand eine Idee, wo ich suchen kann?
Gruß Carsten
5V zu schwach?
Hm wäre das möglich? Ist ein Standard 5 V Netzteil. 5V / 1000 mA. Bei meinem anderen Bauprojekt (TonUino, https://www.voss.earth/tonuino/ (https://www.voss.earth/tonuino/) funktionieren die Netzteile ohne Probleme.
Werde aber mal was anderes dranhängen.
Edit: Was verträgt der Wemos denn? Geht ein 9 V Netzteil? Vermtl zu viel oder?
Gruß Carsten
Wo speist du denn die 5V ein? Am 5V Pin des Wemos?
Bei mir funktioniert der Reader an einem normalen USB Hub (USB auf Einbaubuchse).
Der Wemos verträgt maximal 5V.
Manchmal hilft auch ein Bild vom Aufbau ;)
Also die 5 V kommen vom Netzteil auf den 5V Pin beim Wemos. Ground geht auf Ground am RFID Reader. 3,3 V vom Wemos zum 3,3 V Pin am Reader. Wie auf dem Schema im ersten Post.
Speise ich Stromversorgung über den USB Port ein und nehme Ground vom RFID Reader zum Wemos, funktioniert das ganze ja.
Foto vom Aufbau....
Schwer alles aufs Bild zu bekommen. ;)
Zitat von: CarstenF am 26 Juni 2019, 13:53:50
Also die 5 V kommen vom Netzteil auf den 5V Pin beim Wemos. Ground geht auf Ground am RFID Reader. 3,3 V vom Wemos zum 3,3 V Pin am Reader. Wie auf dem Schema im ersten Post.
Speise ich Stromversorgung über den USB Port ein und nehme Ground vom RFID Reader zum Wemos, funktioniert das ganze ja.
Foto vom Aufbau....
Schwer alles aufs Bild zu bekommen. ;)
Der GND Pin muss von der Buchse zum RFID Modul
und zu den Buttons
und zum Wemos. Bei dir fehlt die Verbindung GND-Wemos.
Zitat von: gloob am 26 Juni 2019, 14:22:30
Der GND Pin muss von der Buchse zum RFID Modul und zu den Buttons und zum Wemos. Bei dir fehlt die Verbindung GND-Wemos.
Ja was soll ich sagen. Wenn man es Richtig macht, klappt auch alles. :-[ Danke Dir. Ich hatte irgendwie geglaubt Grund wird im Wemos durchgeschleift (sagt man das so?). Vermutlich hab ich das Schaltbild falsch interpretiert.
Vielen Dank fürs Helfen und noch einen entspannten warmen Tag. 8)
Gruß Carsten
Hallo Stefan,
der RFID-Reader ist heute angekommen. Und schon taucht das erste Problem auf. Ich habe den Reader mit meinem WLAN verbunden. Das hat auch funktioniert. Der Reader spannt nun kein eigenes WLAN mehr auf. Leider habe ich die IP-Adresse des MQTT-Servers falsch eingegeben, also muss ich einen Reset machen. Der klappt leider nicht: ich habe alle drei Tasten gedrückt gehalten (länger als 5s), aber der Reader verbindet sich immer wieder mit meinem WLAN. Kannst Du helfen?
Liebe Grüße, Daniel
Dann hast du nicht lange genug gedrückt. Probier es mal mit 10 Sekunden.
Du kannst auch dein WLAN abschalten, dann spannt der Reader wieder sein eigenes auf, wenn er sich nicht verbinden kann.
Wenn das nicht hilft, musst du leider die Firmware neu auf den Wemos aufspielen.
Auch mit 10 s Drücken hat es nicht funktioniert. Ausschalten des WLANs hat das Problem behoben. (Logisch, hätte ich auch selbst drauf kommen können...)
Danke für die Hilfe!!!
Daniel
Zitat von: gloob am 11 Juli 2019, 20:45:06
Dann hast du nicht lange genug gedrückt. Probier es mal mit 10 Sekunden.
Du kannst auch dein WLAN abschalten, dann spannt der Reader wieder sein eigenes auf, wenn er sich nicht verbinden kann.
Wenn das nicht hilft, musst du leider die Firmware neu auf den Wemos aufspielen.
Zitat von: synaps-o-dan am 11 Juli 2019, 21:34:21
Auch mit 10 s Drücken hat es nicht funktioniert. Ausschalten des WLANs hat das Problem behoben. (Logisch, hätte ich auch selbst drauf kommen können...)
Danke für die Hilfe!!!
Daniel
Dann muss ich mir das mit dem Reset nochmal angucken, weil genau so habe ich alle Reader zurück gesetzt, nachdem ich sie bei mir getestet habe.
Edit: es kann natürlich sein, dass der Reader in einer Endlosschleife fest hängt, wenn er sich nicht zum MQTT Server verbinden kann.
Gibt es da keine Web gui für die grundlegenden settings?
Gesendet von meinem S60 mit Tapatalk
Okay ich habe es getestet und es ist so, wenn die MQTT Verbindung nicht hergestellt werden kann, hängt er in einem Endlosschleife fest. Ich werde es demnächst beheben und die neue Firmware hier hoch laden.
Zitat von: Frank_Huber am 11 Juli 2019, 21:48:02
Gibt es da keine Web gui für die grundlegenden settings?
Gesendet von meinem S60 mit Tapatalk
Nein ;D
Da Lob ich mir dann das espeasy auf meinem. [emoji16][emoji16][emoji16]
Gesendet von meinem S60 mit Tapatalk
Hi und schöne Ostern gehabt zu haben...
Kurze Frage: Weiß noch jemand, welche Arduino Version ihr verwendet habt? Ich habe einen Rechnerwechsel vollzogen und hab mir nicht notiert, welche IDE ich da drauf hatte. Mit den neuesten Versionen bekomme ich Fehlermeldungen. Scheinbar geht es da um die Subroutinen. Ältere IDE Versionen verarbeiten diesen Sketch scheinbar ohne zu murren. Jetzt gerade habe ich die 1.8.12 drauf, die aber beim kompilieren
Arduino: 1.8.12 (Mac OS X), Board: "LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), 4MB (FS:1MB OTA:~1019KB), v2 Lower Memory, Disabled, None, All Flash Contents, 921600"
In file included from /Users/carstenfickenzer/Downloads/RFID_Reader/RFID_Reader.ino:3:0:
/Users/C***r/Dokumente/Arduino/libraries/libraries/Adafruit_ESP8266/Adafruit_ESP8266.h:28:35: error: section attribute not allowed for 'Pchr'
typedef const PROGMEM char Pchr; // Ditto, kindasorta
^
In file included from /Users/C***r/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/sdk/libc/xtensa-lx106-elf/include/sys/stdio.h:6:0,
from /Users/C***r/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/sdk/libc/xtensa-lx106-elf/include/stdio.h:63,
from /Users/C***r/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/Arduino.h:32,
from sketch/RFID_Reader.ino.cpp:1:
/Users/C***r/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/sdk/libc/xtensa-lx106-elf/include/sys/pgmspace.h:25:130: error: 'const char HTTP_HEAD []' redeclared as different kind of symbol
#define PROGMEM __attribute__((section( "\".irom.text." __FILE__ "." __STRINGIZE(__LINE__) "." __STRINGIZE(__COUNTER__) "\"")))
^
/Users/C***r/Dokumente/Arduino/libraries/libraries/WhareHauoraWiFiManager/WiFiManager.h:25:24: note: in expansion of macro 'PROGMEM'
const char HTTP_HEAD[] PROGMEM = "<!DOCTYPE html><html lang=\"en\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/><title>{v}</title>";
^
In file included from /Users/C***r/Dokumente/Arduino/libraries/libraries/WhareHauoraWiFiManager/WiFiManager.h:17:0,
from /Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino:17:
/Users/C***r/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/libraries/ESP8266WebServer/src/ESP8266WebServer.h:33:39: error: previous declaration of 'HTTPMethod HTTP_HEAD'
enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
^
RFID_Reader:62:1: error: 'MQTTClient' does not name a type
MQTTClient mqtt;
^
RFID_Reader:88:3: error: 'Serial' does not name a type
Serial.println(F("setup mqtt"));
^
In file included from /Users/C***r/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/Arduino.h:242:0,
from sketch/RFID_Reader.ino.cpp:1:
/Users/C***r/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/tools/sdk/libc/xtensa-lx106-elf/include/sys/pgmspace.h:39:248: error: expected unqualified-id before ')' token
#define PSTR(s) (__extension__({static const char __c[] __attribute__((__aligned__(4))) __attribute__((section( "\".irom0.pstr." __FILE__ "." __STRINGIZE(__LINE__) "." __STRINGIZE(__COUNTER__) "\", \"aSM\", @progbits, 1 #"))) = (s); &__c[0];}))
^
/Users/C***r/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/WString.h:38:76: note: in definition of macro 'FPSTR'
#define FPSTR(pstr_pointer) (reinterpret_cast<const __FlashStringHelper *>(pstr_pointer))
^
/Users/C***r/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/WString.h:39:34: note: in expansion of macro 'PSTR'
#define F(string_literal) (FPSTR(PSTR(string_literal)))
^
/Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino:88:18: note: in expansion of macro 'F'
Serial.println(F("setup mqtt"));
^
RFID_Reader:89:3: error: 'Serial' does not name a type
Serial.println("MQTT IP: " + (String)mqtt_server);
^
RFID_Reader:90:3: error: 'Serial' does not name a type
Serial.println("MQTT Port: " + (String)mqtt_port);
^
RFID_Reader:91:3: error: 'Serial' does not name a type
Serial.println("MQTT device name: " + (String)mqtt_device_name);
^
RFID_Reader:92:3: error: 'Serial' does not name a type
Serial.println("MQTT user name: " + (String)mqtt_user);
^
RFID_Reader:93:3: error: 'Serial' does not name a type
Serial.println("MQTT password: " + (String)mqtt_pass);
^
RFID_Reader:94:3: error: 'mqtt' does not name a type
mqtt.begin(mqtt_server, ((String)mqtt_port).toInt(), wifi);
^
RFID_Reader:95:3: error: expected unqualified-id before 'while'
while (!mqtt.connect(mqtt_device_name, mqtt_user, mqtt_pass))
^
RFID_Reader:99:3: error: 'mqtt' does not name a type
mqtt.publish("/" + (String)mqtt_device_name + "/status", ESP.getResetReason());
^
RFID_Reader:100:3: error: 'mqtt' does not name a type
mqtt.publish("/" + (String)mqtt_device_name + "/version", VERSION);
^
RFID_Reader:101:3: error: 'mqtt' does not name a type
mqtt.publish("/" + (String)mqtt_device_name + "/watchdog", String(watchdogCounter));
^
RFID_Reader:102:3: error: 'mqtt' does not name a type
mqtt.publish("/" + (String)mqtt_device_name + "/wifi_rssi", String(WiFi.RSSI()));
^
/Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino: In function 'void onButton1Pressed()':
RFID_Reader:111:3: error: 'mqtt' was not declared in this scope
mqtt.publish("/" + (String)mqtt_device_name + "/button1", "pressed");
^
/Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino: In function 'void onButton2Pressed()':
RFID_Reader:116:3: error: 'mqtt' was not declared in this scope
mqtt.publish("/" + (String)mqtt_device_name + "/button2", "pressed");
^
/Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino: In function 'void onButton3Pressed()':
RFID_Reader:121:3: error: 'mqtt' was not declared in this scope
mqtt.publish("/" + (String)mqtt_device_name + "/button3", "pressed");
^
/Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino: In function 'void onButton1PressedFor()':
RFID_Reader:126:3: error: 'mqtt' was not declared in this scope
mqtt.publish("/" + (String)mqtt_device_name + "/button1", "long pressed");
^
/Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino: In function 'void onButton2PressedFor()':
RFID_Reader:131:3: error: 'mqtt' was not declared in this scope
mqtt.publish("/" + (String)mqtt_device_name + "/button2", "long pressed");
^
/Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino: In function 'void onButton3PressedFor()':
RFID_Reader:136:3: error: 'mqtt' was not declared in this scope
mqtt.publish("/" + (String)mqtt_device_name + "/button3", "long pressed");
^
/Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino: In function 'void handleRFID()':
RFID_Reader:314:3: error: 'mqtt' was not declared in this scope
mqtt.publish("/" + (String)mqtt_device_name + "/uid", printHex(rfid.uid.uidByte, rfid.uid.size));
^
/Users/C***r/Downloads/RFID_Reader/RFID_Reader.ino: In function 'void loop()':
RFID_Reader:348:5: error: 'mqtt' was not declared in this scope
mqtt.publish("/" + (String)mqtt_device_name + "/watchdog", String(watchdogCounter));
^
RFID_Reader:360:3: error: 'mqtt' was not declared in this scope
mqtt.loop();
^
exit status 1
'MQTTClient' does not name a type
diesen Fehler bringt. Lt. Dr. Google, geht es um die besagten Subroutinen. Ich weiß leider nicht genau wie ich den Code umschreiben muß, damit das funktioniert. Deshalb wollte ich den Umweg über die ältere IDE gehen.
Gruß C.
Nach laaaaangem rumprobieren auf einer Ubuntu Distribution und übertragen der Einstellungen hab ich den Übeltäter gefunden. Es war die Boarddefinition für ESP8266. Mit der 2.42 Version und der WifiManager Version 0.8.0 konnte ich sowohl auf dem Ubuntu, als auch auf dem Mac den Sketch flashen. Puh, das hat Nerven gekostet. Aber vielleicht gerät ja noch jemand anderes in diese Lage.
Gruß C.,
Falls jemand den o.g. Fehler hatte, den ich auch eben hatte:
Ich hatte aus der Bibliothek einfach "Wifimanager" gesucht und da es viele Treffer gibt mit "tzapu" verfeinert. Dann ist aber der erste Treffer mit dem Namen "Wifimanager" ein Fork, mit dem es nicht fuktioniert hat.
Funktioniert hat es dann mit:
WifiManager by tzapu,tablatronix Version 2.0.3-alpha (installiert via Bibliotheksverwaltung)
Arduino IDE 1.8.13
ESP8266 Community Version 2.7.4
(sollte derzeit, 01/21, relativ aktuell sein).
Ich habe mal eine V1.8 hochgeladen, die eine LED an D0 kurz aufblinken lässt, wenn ein RFID Chip erkannt wurde.
Zitat von: Ranseyer am 30 Januar 2019, 19:11:12
OK-ey... :o
Danke für die Info. Dann bräuchte ich auch keine M4 Schrauben "reinmurksen" ... 8)
Hab vorher schon mal eine Satz deiner Wunderteile bestellt...
geht auch mit einem Lötkolben, einfach aufstecken, den Lötkolben aufsetzen und vorsichtig runterdrücken....
Hallo Stefan,
ich habe mir schon vor längerer Zeit die Bauteile zugelegt, habe jetzt durch deine Verkaufsanzeige wieder dran gedacht und wollte mal das Ganze zusammenbauen. Finde aber die stl-Dateien auf thingiverse nicht mehr, sind die denn irgendwoanders hin gezogen?
Zitat von: gloob am 12 Januar 2019, 18:56:40
Hallo,
Ich bin gerade am basteln und möchte euch am Fortschritt teil haben lassen. Angeregt durch einen anderen Thread hier im Forum baue ich mir gerade einen MQTT - RFID - Reader um die Sonos Box im Kinderzimmer zu steuern.
Firmware
Aktuell habe ich einen RFID Reader (RC522) mit einem Wemos (Wemos D1 mini) gekoppelt und einen Sketch aufgespielt, der die IDs der Karten per MQTT an FHEM überträgt.
Den verwendeten Sketch hänge ich hier an. Die Settings zum flashen habe ich in einem Screenshot festgehalten.
Die Firmware hat Long-Press Support für die Buttons. Die Zeit ist aktuell auf eine Sekunde eingestellt.
Zusätzlich gibt es einen Watchdog Counter der jede Minute hochgezählt wird.
Durch gleichzeitiges Drücken und Halten der 3 Buttons für mehr als 5 Sekunden wird der Reader auf Werkseinstellungen zurück gesetzt. Wifi und MQTT Einstellungen müssen/können danach neu gesetzt werden.
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.4":
- Unterstützung für Username und Passwort für MQTT
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.5":
- Vollständige Unterstützung für MQTT Einstellungen: IP, Port, Username, Passwort, Devicename
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.6":
- Reset auf Werkseinstellungen (Wifi + MQTT) durch gleichzeitiges Drücken und Halten aller 3 Buttons für mehr als 5 Sekunden
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.7":
- neues MQTT Reading für die WLAN Signalstärke: /RFID_Reader/wifi_rssi:.* RSSI
Neue Firmware "RFID_Buttons_WLAN_LongPressed_v1.8":
- Integration einer LED an D0 die kurz Aufblinkt wenn ein RFID Chip erkannt wurde
Ich habe mir erlaubt, die Firmware etwas zu modifizieren und den gescannten TAG als HEX (uid-h) und dezimal (uid) zusätzlichen Topic auszugeben; den führenden "\" (hatte mich gestört) kann man über eine Definition wieder reinbringen. Die Button Funktionen sind hier entfernt. So ist der Reader mit der MQTT Message wieder mit einem ESPEasy System (PN532) wieder kompatibel. Wobei ich auch hier eine Lösung habe, die sowohl decimal als auch hex den TAG als Topic liefert:
Einfach als Rule in ESPEasy einführen, RFID ist der Devicename, Tag das Reading/Value:
on RFID#Tag do
Publish %sysname%/RFID/RFIDxH, {tohex:[RFID#Tag]}
endon
Zitat von: Horti am 20 Februar 2021, 22:36:27
Hallo Stefan,
ich habe mir schon vor längerer Zeit die Bauteile zugelegt, habe jetzt durch deine Verkaufsanzeige wieder dran gedacht und wollte mal das Ganze zusammenbauen. Finde aber die stl-Dateien auf thingiverse nicht mehr, sind die denn irgendwoanders hin gezogen?
die Teile hab ich auch schon gesucht.. ;)
Zitat von: Horti am 20 Februar 2021, 22:36:27
Hallo Stefan,
ich habe mir schon vor längerer Zeit die Bauteile zugelegt, habe jetzt durch deine Verkaufsanzeige wieder dran gedacht und wollte mal das Ganze zusammenbauen. Finde aber die stl-Dateien auf thingiverse nicht mehr, sind die denn irgendwoanders hin gezogen?
Hallo,
habe grad was ähnliches auf Thingiverse gefunden, da sollte Stefan's Aufbau reinpassen, vielleicht ist es sogar Stefan's .. wer weiss..
https://www.thingiverse.com/thing:2610816
Zitat von: Horti am 20 Februar 2021, 22:36:27
Hallo Stefan,
ich habe mir schon vor längerer Zeit die Bauteile zugelegt, habe jetzt durch deine Verkaufsanzeige wieder dran gedacht und wollte mal das Ganze zusammenbauen. Finde aber die stl-Dateien auf thingiverse nicht mehr, sind die denn irgendwoanders hin gezogen?
Die STL Dateien der großen Version kann ich gegen eine kleine Spende gerne zur Verfügung stellen.
Die kleine Variante ohne Buttons ist nicht direkt von mir, da habe ich mich inspirieren lassen von Thingiverse.
Hallo,
falls auch noch für jemanden interessant ist.... Ich habe von gloob - Danke nochmal vielmals an der Stelle - auch so einen RFID Reader
erhalten und die Firmware inzwischen ebenfalls etwas modifiziert.
Hatte bei mir das Problem, dass das Gerät - wenn das WLAN und MQTT konfiguriert ist und funktioniert - nach
dem nächsten Neustart trotz normalem Connect ins lokale WLAN es zusätzlich noch den AP Modus aktiv hatte
und ein zusätzliches WLAN (immer noch mit der ssid "RFID_Reader") erzeugt hat.
Man konnte sich sogar damit verbinden, hat per DHCP eine IP bekommen und konnte das Gerät auch
erfolgreich anpingen (aber Weboberfläche zur Konfiguration war nicht mehr aktiv). Gleichzeitig war es
auch im lokalen WLAN normal angemeldet und hat per MQTT Nachrichten verschickt.
Auch wenn es trotzdem funktioniert hat, so hat mich das zusätzliche WLAN etwas gestört. Daher im wesentlichen
die Motivation und das Hauptziel für die neue Firmware.
Nebenbei habe ich aber auch noch z.B. von SPIFFS auf LittleFS umgestellt (schon um die deprecated-Warnungen
beim Kompilieren loszuwerden).
Sketch ist anbei.
Update: auch noch ein Screenshot angehängt mit meinen Flash/Board-Einstellungen in der Arduino IDE 1.8.15
Hallo zusammen,
ich habe den Reader heute mal in Betrieb genommen, die Einstellungen im WeMos gemacht (einmal die MQTT Adresse mittels Klarnamen bzw. dann mit IP ADresse) und in FHEM definiert:
define MQTT_PMRFIDREADER01 MQTT2_DEVICE PMRFIDreader01
setuuid MQTT_PMRFIDREADER01 xxx
attr MQTT_PMRFIDREADER01 IODev PMBroker01
attr MQTT_PMRFIDREADER01 readingList /RFID_Reader/version:.* Version\
/RFID_Reader/status:.* status\
/RFID_Reader/watchdog:.* Watchdog\
/RFID_Reader/wifi_rssi:.* RSSI\
/RFID_Reader/uid:.* UID\
/RFID_Reader/button1:.* Button1\
/RFID_Reader/button2:.* Button2\
/RFID_Reader/button3:.* Button3
attr MQTT_PMRFIDREADER01 room 9.1_Radio
Bei mir laufen auch schon andere MQTT devices mit MQTT2 (FHEM als broker), aber alles, was passiert, ist, dass der Broker hektisch die
nrclients
um einen erhöht und dann wieder verringert. Werte kommen keine an.
Hat jemand einen Tipp, wo ich suchen soll? Die Firmwareversion weiß ich leider nicht ...
Ggf. an der seriellen Schnittstelle lauschen? Wenn ja, wie ist die Baudrate?
Gibt es irgendwo ein fertig compiliertes Binary?
Danke für einen kurzen Stups in die richtige Richtung ...
Gruß Peter
Edit 1:
serielle Schnittstelle 115500 8/1/N
*WM: [2] Connection result: WL_CONNECTED
*WM: [3] lastconxresult: WL_CONNECTED
*WM: [1] AutoConnect: SUCCESS
*WM: [1] STA IP Address: 192.168.188.50
wifi connected
setup buttons
setup mqtt
MQTT IP: PMRPI03
MQTT Port: 1883
MQTT device name: PMRFIDreader01
MQTT user name:
MQTT password:
..........................
Der Reader scheint die erneute Konfiguration mit IP Adresse und usser/password nicht gemacht zu haben ...
Edit 2:
Ich befürchte, dass der AP/WLAN Name und der MQTT Name das Problem sind :( ...
Edit 3:
Das war's wohl nicht. Die Erstkonfiguration wird gespeichert, alle folgenden gehen schief. Muss ich vermutlich doch noch einmal neu kompilieren (oder die Konfiguration per WebInterface löschen).
Edit 4:
Mit der neu compilierten Firmware (WeMos D1 mini komplett gelöscht) und neu eingerichtet funktioniert es. Der MQTT Broker wurde als IP Adresse angegeben. Anbei die compilierte Firmware v1.8 as 4 5MB Binary.