DIY - "Toniebox" Zutaten: ESP8266 + RFID Reader PN532 & Espeasy + Sonos Play1

Begonnen von Joejoe, 08 Januar 2019, 16:58:33

Vorheriges Thema - Nächstes Thema

Joejoe

Hallo zusammen,

Ich versuche mich gerade an der Kombination (ESP8266 + RFID Reader PN532 & ESPEasy Build: mega-20181231) aus dem Thread https://forum.fhem.de/index.php/topic,86868.0.html.

Ich möchte aus dieser Kombination und einer Sonos-Box eine "Toniebox" für meinen kleinen Sohn bauen bei der er RFID-Karten (oder RFID-Chip an Figur geklebt) benutzt um von der NAS im Netzwerk seine Musik abzuspielen etc.

Die Kombination ist erfolgreich in FHEM eingebunden (Bridge und Device angelegt).
Sobald ich einen Chip auf das Lesegerät lege, wird die hinterlegte Playlist abgespielt.

Anfangs war bei mir wie im eingangs genannten Thread das Problem, dass das Event dauerhaft/zu oft eintrat. Das wurde durch " event-on-change-reading .* " behoben.

Jetzt wollte ich allerdings die Funktion der Figuren der Toniebox nachempfinden und bei herunternehmen des Chips die Musik anhalten/pausieren.
Zusätzlich wäre die Speicherung des letzten Tracks/Position genial  ::)

Was ich bisher herausgefunden habe ist, dass der Log des ESP-Easy vollgeschrieben wird vom Lesen des Chips wenn ich ihn auf dem Leser liegenlasse. Das wiederum würde dauerhaft Traffic vom ESP zu FHEM bedeuten.

Weiter habe ich herausgefunden, dass sich Regeln (Rules) definieren lassen. Da steig ich aber noch nicht durch  :-\

Mein Vorschlag wäre eine Regel im ESP zu definieren, die:
Chip auf Leser -> Tag Nummer wird an FHEM gesendet
Chip wird vom Leser genommen -> Tag Nummer wird auf 0 gesetzt

FHEM nutzt die Tag-Nummer zur Identifizierung und laden des letzten Tracks/Position.
Sobald der Tag wieder auf 0 gesetzt wird soll der Aktuelle Track/Position zugehörig der Tag-Nummer gespeichert werden.

Ist nicht einfach (für mich) , aber einfach kann ja jeder ;)

Kann mir hier jemand Ratschläge/Links/Codeschnipsel geben über die ich zu einer Lösung gelange?

Grüße Joe

balli1187

Ich kann leider bei deinem Problem überhauptnicht helfen aber als Vater einer zweijährigen Tochter finde ich dein Projekt echt cool!
Könntest du vielleicht noch ein paar Bilder der Hardware-Umsetzung posten? Würde mich einfach interessieren :-)


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Joejoe

Hallo balli1187,

Bisher ist es einfach nur die lose Verkabelung des ESP und RFID der per USB an meinem Rechner hängt.

Wenn ich ein geeignetes Gehäuse gefunden habe werden noch passende Taster für die Bedienung (Pause, Next, etc) besorgen und das ganze natürlich hier posten  8)

Gruß Joe

Frank_Huber

Ich lese hier mal mit.
Meine Töchter (4 und 6) wären bestimmt begeistert. [emoji16][emoji16][emoji16]
Der Leser ist schon bestellt, wemos Module sind noch da.
Ansteuern werde ich damit Kodi.

Gesendet von meinem Doogee S60 mit Tapatalk


Hollo

Ich lese hier auch mal mit.

Ich habe mangels fertiger Alternative widerwillig (P/L-Verhältnis) zugestimmt, als mein Sohn eine Toniebox bekam.
Für eigene Inhalte gibt es da ja die Kreativ-Tonies, aber das finde ich wegen dem Cloud-Umweg zur Umwandlung sehr umständlich.

ABER das Bedienkonzept ist für Kinder wirklich Top umgesetzt; inkl. der Fehlercodes über Tiernamen.

Eine ähnliche Umsetzung mit FHEM-Anbindung finde ich sehr interessant.
Dazu noch eine "Anregung"...
Vielleicht wäre es da auch eine Variante, Karte/Chip nicht pro Folge, sondern pro Serie zu definieren.
Den Rest könnte dann FHEM übernehmen...
- welche Folge wird gerade gespielt
- aktuelle Position merken
- welche Folge kommt danach
- Random oder Reihenfolge
- Per Button / Slider Anzahl der jetzt noch erlaubten Folgen
- ...
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

RaspiLED

Hi,
Danke für den Thread. Ich Schlüsse mich dem vorpost voll an - naja hübsch gemacht ist die Box ja auch noch ;-)

Okay zurück zum Problem:
Der Traffic zwischen ESPEasy und FHEM ist eh da. Mit Event-on-* steuerst Du nur die FHEM internen Events.

Daher sehe ich zwei Hndlungsmöglichkeiten:
1) vom ESP wird nur eine Änderung am RFID Reader in den Rules ausgewertet und danach in FHEM ein Event getriggert.
2) Wir lassen die Events in FHEM alle laufen und machen einen watchdog (oder timer) in FHEM drauf. Der watchdog in FHEM pausiert dann den play Befehl.

Zu 1) ist fraglich ob die ESPEasy lib überhaupt einen timeout beim auslesen des RFID Chips erlaubt und überhaupt etwas (also eine 0) zurückgibt, wenn kein TAG aufliegt
Hier ist das mal für Arduino beschrieben: https://arduino.stackexchange.com/questions/21619/detect-when-rfid-card-is-absent

Zu 2) sollte eigentlich mit FHEM Bordmitteln gehen ;-)
https://wiki.fhem.de/wiki/Watchdog

define w watchdog ESP*.RFID* 00:01 SAME set Player pause;; trigger w .


Gruß Arnd


Gesendet von iPhone mit Tapatalk
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

RaspiLED

Hi,
Kannst Du und trotzdem mal Deine Pinbelegungen aufmalen, damit wir das gleiche aufbauen.

Oder Ist Dein RFID Reader einfach so angeschlossen:
There are 2 small switches on the PN532. Set sw1 to ON and sw2 OFF. connect the VCC pin to 3v3, GND to GND, SDA to D2, and SCL to D1 of the nodeMCU. von https://www.hackster.io/Granpino/rfid-control-for-your-home-automation-espeasy-and-domoticz-5fe5f8

Gruß Arnd



Gesendet von iPhone mit Tapatalk
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

balli1187

Vielleicht ist auch ein eigener Sketch eine Alternative zu ESPEasy...

So wie in dem Video dargestellt, sollte das Traffic-Problem lösbar sein.

https://youtu.be/K0PT066UQKU


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

RaspiLED

Stimmt per MQTT ginge ja auch ;-)

Gruß Arnd


Gesendet von iPhone mit Tapatalk
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

willib

Interessante Idee. Vielleicht kann man hier noch was abschauen:
https://github.com/MiczFlor/RPi-Jukebox-RFID


oder doch lieber hier (wegen Arduino statt Pi) leider ohne Netzwerk und daher ohne FHEM Anbindung:
https://www.voss.earth/tonuino/
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD

RaspiLED

Hier gibt es was zu unserem Problem des Entfernen:

https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/62

So ganz trivial scheint es nicht, da wir doch in Software
Mit Timeouts arbeiten müssen oder Hardware Hacks nutzen ;-)

Ich habe hier andere Reader (RC522) als der TO :-(

Gruß Arnd



Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Joejoe

So, ich hab mir jetzt über die Rules weitergeholfen.

Nachdem ich den Syntax verstanden hatte war es auch nicht mehr so schwer.

Ich habe ein "Generic - Dummy Device" unter Devices angelegt die keine Dezimalstellen haben.
Durch Autocreate wurde in FHEM ein Device angelegt mit dem Namen den ich im ESP bei "Name" eingetragen habe.

Ich habe in den Rules diese Zeilen eingetragen:

on RFID#Tag do
   TaskValueSet 2,1,1     // setze Device-Task-Nr.2, erster Dummy, Wert 1
   timerSet,1,1           // Starte Timer 1 mit einer Sekunde
endon

on Rules#Timer=1 do       // Wenn Timer 1 abgelaufen (1 ist)
   TaskValueSet 2,1,0     // setze Device-Task-Nr.2, erster Dummy, Wert 0
endon


Jetzt wird solange der RFID-Chip auf dem Leser liegt der Timer auf eine Sekunde gesetzt und der Dummy auf 1 gesetzt.
Bleibt der RFID-Chip liegen wird der Timer dauerhaft auf 1 Sekunde gehalten.
Sobald der RFID-Chip heruntergenommen wird, läuft der Timer ab und setzt nach einer Sekunde den Dummy auf 0.

In FHEM ist die Sache auch angekommen aber der Wechsel des Signals wird (über den Event Monitor geschaut) nur jede Minute übertragen.
Welches Attribut muss ich verändern damit das direkt empfangen wird? ???

Gruß Joe

Joejoe

Zitat von: RaspiLED am 08 Januar 2019, 23:02:09
Hi,
Kannst Du und trotzdem mal Deine Pinbelegungen aufmalen, damit wir das gleiche aufbauen.

Oder Ist Dein RFID Reader einfach so angeschlossen:
There are 2 small switches on the PN532. Set sw1 to ON and sw2 OFF. connect the VCC pin to 3v3, GND to GND, SDA to D2, and SCL to D1 of the nodeMCU. von https://www.hackster.io/Granpino/rfid-control-for-your-home-automation-espeasy-and-domoticz-5fe5f8

Gruß Arnd



Gesendet von iPhone mit Tapatalk

Für die Verdrahtung habe ich mich an den Standard gehalten außer evtl die Aderfarben ;D (siehe auch Bilder).

MCU    ----    PN532
G -     rot -     GND
3V -  braun -    VCC
D2 - schwarz - SDA
D1 -   weiß -    SCL

Die Schalterstellung habe ich auf I2C stehen (siehe auch Bild)

I0 steht Richtung ON
I1 steht Richtung 2 (OFF)

Gruß Joe

RaspiLED

Zitat von: Joejoe am 09 Januar 2019, 21:24:27
[...]
Ich habe ein "Generic - Dummy Device" unter Devices angelegt die keine Dezimalstellen haben.
[...] in FHEM ein Device [...] ESP bei "Name" [...]
In FHEM ist die Sache auch angekommen aber der Wechsel des Signals wird (über den Event Monitor geschaut) nur jede Minute übertragen.
Welches Attribut muss ich verändern damit das direkt empfangen wird? ???
[...]

Moin,
In dem Dummy steht das Interval, bei Dir wahrscheinlich 60!? Ich glaube beim Dummy darf man das nicht auf 0 setzen. Daher in den Rules direkt nach dem TaskValueSet ein publish an FHEM absetzen:

TaskRun,2


vgl. https://forum.fhem.de/index.php/topic,72502.msg776812.html#msg776812

Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

gloob

Ich lese hier mal still mit, weil mich das Thema auch interessiert.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Tedious

FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

willib

Zitat von: RaspiLED am 09 Januar 2019, 20:49:35
Hier gibt es was zu unserem Problem des Entfernen:

https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/62

So ganz trivial scheint es nicht, da wir doch in Software
Mit Timeouts arbeiten müssen oder Hardware Hacks nutzen ;-)


Ich würde vorschlagen einen Reed Kontakt zu verwenden und den RFID Tag oder die Figur zusätlich mit einem Magnet zu versehen.

Edit:
Ich habe nun diesen Artikel gefunden und direkt mal die Teile bestellt. Ich habe davon überhaupt keine Ahnung. Es sieht einfach aus und der FHEM code ist auch beschrieben.

https://haus-automatisierung.com/projekt/2018/12/16/projekt-playbox-mqtt-fhem-spotify.html
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD

Tedious

Das klingt schon mal sehr spannend, aber was mir nicht klar ist - er übergibt die RFID-Nummern an FHEM und ordnet denn eine Spotify-Playlist zu. So weit, so gut. Aber wie bringt er denn Alexa (da steht ein Dot im Video?) dazu das denn abzuspielen?
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

balli1187

Zitat von: Tedious am 11 Januar 2019, 10:02:17
Das klingt schon mal sehr spannend, aber was mir nicht klar ist - er übergibt die RFID-Nummern an FHEM und ordnet denn eine Spotify-Playlist zu. So weit, so gut. Aber wie bringt er denn Alexa (da steht ein Dot im Video?) dazu das denn abzuspielen?

Über dieses Modul zum Beispiel:
[37_echodevice] Amazon Echo Modul (nicht Alexa)
https://r.tapatalk.com/shareLink?share_fid=75100&share_tid=82631&url=https%3A%2F%2Fforum%2Efhem%2Ede%2Findex%2Ephp%3Ftopic%3D82631&share_type=t


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

willib

Das Gute ist dass das alles in FHEM passiert.
Ich kenne das Spotify Modul nicht. Kann man da eventuell ein Ausgabegerät definieren? Es gibt in FHEM auch ein Echo Modul mit dem man einen Echo steuern kann. Ich habe allerdings im Video keine Ausgabe gehört.

Ich würde gerne MP3 vom NAS auf Sonos ausgeben. Dazu muss ich halt den FHEM Teil noch anpassen.
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD

Tedious

Jau, das klingt echt spannend! Das Echo Modul nutze ich schon, denn muss ich mich da mal weiter einlesen - außer Amazon-Playlisten starten habe ich in der Richtung noch wenig versucht, war mir nicht klar dass ich über das Modul Musik die nicht bei Amazon (hier Spotify) abspielen kann. Vom NAS (oder LMS, der läuft eh bei mir) auf einen Echo wäre natürlich die Königsdisziplin. Ich lese mal ein wenig.. :)
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Neuhier


Joejoe

So, ich habe den Fehler mit der nur minütlich übertragenen Reading für die Anwesenheit des Chips gefunden:
Unter den Einstellungen des "Generic - Dummy Device" auf dem ESP wird das Intervall auf "1" gestellt. So wird das Reading jede Sekunde aktualisiert.
So hab ich maximal eine Sekunde Nachlauf nachdem ich den Chip runtergenommen habe.

Ich habe jetzt von dem Vorschlag https://haus-automatisierung.com/projekt/2018/12/16/projekt-playbox-mqtt-fhem-spotify.html die DEF von dem Notify teilweise übernommen:


ESPEasy_ESP_Easy_Playbox:Tag_Nummer:.* {
    my $SonosTrack = ReadingsVal($NAME, 'card_' . $EVTPART1, 'undef');
    if ($SonosTrack ne 'undef') {
            fhem("set Sonos_Kueche " . $SonosTrack);
fhem("set Sonos_Kueche Volume 10");
      } else {
        fhem("setreading $NAME card_$EVTPART1 undef");
        # Nachricht, dass Song nicht gefunden
    }

}


Hier wird beim Event der Tag_Nummer geschaut welche Nummer ankommt und bei Vorhandensein eines entsprechenden Reading die dort hinterlegte Variable/Pfad auf dem Player Sonos_Kueche abgespielt. Zusätzlich habe ich die Lautstärke auf 10 gesetzt um nicht von der vorhergehend eingestellten Lautstärke überrascht zu werden.
Wird ein unbekannter Chip aufgelegt wird ein Reading angelegt das den Wert "undef" trägt. Somit kann man mit setreading einen entsprechenden Pfad eintragen.

Das funktioniert alles soweit.

Jetzt würde ich gerne noch über ein anderes Reading die auszuwählende Box verändern.

Aktuell hab ich ein Reading erstellt: ESPEasy_ESP_Easy_Playbox:Selected Box mit dem Wert "Sonos_Kueche"
Ich hänge aber grad an dem Syntax wie ich das in die DEF des Notify einbaue.
Eckige Klammern, runde Klammern oder geschweifte Klammern... Hat alles nichts geholfen :-\

Kann mir da jemand helfen?

Vielen Dank  ;D

Joe

RaspiLED

Hi,
1) hat das TasKRun,2 was ich oben beschrieben habe nicht geholfen?

2) Ist das Leerzeichen Dein Feind (Selected Player)? Mal mit . Probiert?
Gruß Arnd


Gesendet von iPhone mit Tapatalk
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Joejoe

Aktuell sieht es in den Rules so aus:

on RFID#Tag do
   TaskValueSet 2,1,1              // setze Device-Task-Nr.2, erster Dummy, Wert 1
   TaskValueSet 2,2,[RFID#Tag]     // setze Device-Task-Nr.2, zweiter Dummy, Tag des RFID-Chips
   TaskRun,2
   timerSet,1,1                    // Starte Timer 1 mit einer Sekunde
endon

on Rules#Timer=1 do                // Wenn Timer 1 abgelaufen (1 ist)
   TaskValueSet 2,1,0              // setze Device-Task-Nr.2, erster Dummy, Wert 0
   TaskValueSet 2,2,0              // setze Device-Task-Nr.2, zweiter Dummy, Wert 0
   TaskRun,2
endon


Ich setze den RFID-Tag auch in ein Dummy Device und auf 0 sobald der Chip weggenommen wird.
Allerdings wird der Wert nur nach dem Aktualisierungsintervall vom ESP an Fhem gesendet.

Das Leerzeichen hat das Handy eingefügt  >:( Ist in Fhem ohne Leerzeichen erstellt.

Ist das der richtige Syntax?
fhem("set ESPEasy_ESP_Easy_Playbox:SelectedBox " . $SonosTrack);

Gruß Joe

balli1187

Zitat von: Joejoe am 16 Januar 2019, 18:41:13
Aktuell sieht es in den Rules so aus:

on RFID#Tag do
   TaskValueSet 2,1,1              // setze Device-Task-Nr.2, erster Dummy, Wert 1
   TaskValueSet 2,2,[RFID#Tag]     // setze Device-Task-Nr.2, zweiter Dummy, Tag des RFID-Chips
   TaskRun,2
   timerSet,1,1                    // Starte Timer 1 mit einer Sekunde
endon

on Rules#Timer=1 do                // Wenn Timer 1 abgelaufen (1 ist)
   TaskValueSet 2,1,0              // setze Device-Task-Nr.2, erster Dummy, Wert 0
   TaskValueSet 2,2,0              // setze Device-Task-Nr.2, zweiter Dummy, Wert 0
   TaskRun,2
endon


Ich setze den RFID-Tag auch in ein Dummy Device und auf 0 sobald der Chip weggenommen wird.
Allerdings wird der Wert nur nach dem Aktualisierungsintervall vom ESP an Fhem gesendet.

Das Leerzeichen hat das Handy eingefügt  >:( Ist in Fhem ohne Leerzeichen erstellt.

Ist das der richtige Syntax?
fhem("set ESPEasy_ESP_Easy_Playbox:SelectedBox " . $SonosTrack);

Gruß Joe
Wenn du mit Doppelten Anführungszeichen arbeitest werden die Steuerleuten erkannt und du kannst. Für das setzen von Readings gibt es einen eigenen Befehl.

fhem("setReading ESPEasy_ESP_Easy_Playbox SelectedBox $SonosTrack");
Sollte funktionieren


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Joejoe

Ich setze nicht das Reading sondern starte damit den Player

$SonosTrack = "PlayURI //NAS/Ordner/Playlist.m3u
Device:ESPEasy_ESP_Easy_Playbox Reading:SelectedBox = Sonos_Kueche

Insgesamt sollte dann da stehen: (zusammengesetzt aus ESPEasy_ESP_Easy_Playbox:SelectedBox & $SonosTrack)
fhem("set Sonos_Kueche PlayURI //NAS/Ordner/Playlist.m3u")

balli1187

Sorry zu schnell gelesen

fhem("set " . ReadingsVal('ESPEasy_ESP_Easy_Playbox','SelectedBox','') . " $SonosTrack");


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

RaspiLED

Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Joejoe

Nach ein bisschen rumspielen hat es nun so geklapp:

ESPEasy_ESP_Easy_Playbox:Tag_Nummer:.* {
    my $SonosTrack = ReadingsVal($NAME, 'card_' . $EVTPART1, 'undef');
    if ($SonosTrack ne 'undef') {
fhem("set " . ReadingsVal('ESPEasy_ESP_Easy_Playbox','SelectedBox','') . " " . $SonosTrack);
fhem("set " . ReadingsVal('ESPEasy_ESP_Easy_Playbox','SelectedBox','') . " Volume 5");
      } else {
        fhem("setreading $NAME card_$EVTPART1 undef");
        # Nachricht, dass Song nicht gefunden
    }

}


Vielen Dank!  :D

parabacus

Coole Idee!!!  ;D
Ich fang auch grad an, mich in die ESPs einzuarbeiten, hab wegen einem anderen Anwendungsfall schon ein PN532-Modul und WeMos D1 bestellt.
Aus Interesse - und vielleicht könnt's auch damit gehen - ein DFPlayer-Modul - hat SD-Karten-Slot.
Einen LMS hätte ich auch laufen und eine Squeezebox dazu, sowie einen Twonky-Media-Server - irgenwas muss sich da doch auch zaubern lassen.  ;)

Ich les mal mit und studiere, was ihr schon so versucht habt - erst ist da noch ein anderes Projekt zu beenden.
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

Tedious

Ich bin jetzt erst mal auf den Tonuino umgeschwenkt. Nicht so charmant wie die LMS Varianten, aber die Kinder können den halt auch mit zu Opa/Oma nehmen und ihre Sachen abspielen. Die ESP-Variante mit LMS ist charmant, wird auch noch Einzug halten, denn aber als Festeinbau im Kinderzimmer...
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

gloob

Meine RFID Box mit 3 Buttons nimmt auch langsam Formen an.
Die Stromversorgung erfolgt über einen Hohlstecker auf der Rückseite, ist mechanisch deutlich stabiler als die USB Buchse am Wemos.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Frank_Huber

Zitat von: gloob am 29 Januar 2019, 14:32:40
Meine RFID Box mit 3 Buttons nimmt auch langsam Formen an.
Die Stromversorgung erfolgt über einen Hohlstecker auf der Rückseite, ist mechanisch deutlich stabiler als die USB Buchse am Wemos.
was willst für so ein Gehäuse? ;)

gloob

Kann ich dir sagen, wenn ich es fertig gedruckt habe und alles passt :)
Sollte aber nicht zu teuer werden.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

nils_

viele Wege in FHEM es gibt!

gloob

Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Joejoe

Meine Ausführung ist nicht so professionell, aber das Gehäuse lässt sich ja noch ändern.

Leider hab ich ein Performance-Problem:
Wenn die Karte auf dem Leser liegt, ist der CPU Load bei 85% und die Tastbefehle (Volumen usw) von den GPIO's kommen nicht mehr sicher zum FHEM durch.  :-[

Hab gelesen dass der Nodemcu auch mit 160MHz laufen kann. Würde das etwas verbessern?
Und wenn ja, kann mir jemand verraten wie ich ESPEasy dazu bring den ESP auf 160MHz laufen zu lassen?

Joe

gloob

Willst du nur ein auflegen der Karte erkennen oder auch ein Weg nehmen? Kannst du mal deien Source Code zeigen? Da kann man bestimmt was machen.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Joejoe

Über die Rules habe ich ein Bit erstellt, dass die Anwesenheit der Karte übermittelt:

https://forum.fhem.de/index.php/topic,95552.msg884708.html#msg884708

Aber auch wenn die Rules leer sind steigt bei aufgelegte Karte die CPU-Load auf 80%  :o

parabacus

Nachdem ich heute auch mal mit dem RFID-Leser was gebastelt hab, bin ich auf ein scheinbar reproduzierbares Problem gestossen.

Ich hab meine Applikation programmiert - RFID-Leser per ESP-01 angeschlossen und der übermittelt ausschliesslich die Tag-Info an FHEM, wo eine Alarmanlage de-/aktiviert werden soll. Soweit funktioniert das alles inzwischen wie gewünscht.
Als ich fertig war und lediglich mal den ESP-Baustein mit dem RFID-Leser von der Spannung kurzzeitig getrennt habe, sendet der PN532 die Tag-Info nur noch für eine Sequenz. Gehe ich mit dem selben oder einem anderen RFID-Chip ans PN532-Modul, liest der den nicht. Erst wenn ich mindestens das PN532-Modul kurz resete, liest dieses den Tag (egal welchen) wieder ein, aber auch nur für eine Sequenz.
Das Problem ist weder im FHEM und auch nicht in ESPEasy - beides kann ich 100%ig auschliessen.

Dann das Lustige.... - spannungslos liegen lassen für mehrere Stunden löst das Problem.  ??? Dann wieder angestöpselt, tut er das was er soll! - Tag dran *Piep*, Tag dran *Piep*, usw.

Das kapier ich nicht, konnte es aber inzwischen schon dreimal so reproduzieren. Kennt das Phänomen jemand?

Btw - auf der Seite von ELECHOUSE gibt's übrigens noch die Info, dass es China-Plagiate mit schlechter Performance gäbe. Ich kann aber nicht identifizieren, ob meines echt oder gefälscht ist.
https://www.elechouse.com/elechouse/images/product/PN532_module_V3/Fight_copy.pdf
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

parabacus

Ich hab jetzt aus einem anderen Grund mit einem WeMos-D1 neu aufgesetzt, das Phänomen blieb aber erhalten.

Bei der Konfiguration des PN532 gäbe es ja noch einen Punkt "Reset-Pin". Der stand bei mir bisher auf "None".
Jetzt dachte ich, dass die Konfiguration auf einen (belibigen?) Pin dieses irgenwie rücksetzen würde, was vielleicht das Problem lösen könnte. Im Wiki steht ja auch, dass das Modul ab und zu in einen Fehlerzustand ginge. Nachdem ich den Pin konfiguriert und ansgschlossen habe, hat sich aber auch nichts verbessert.
Mein Problem hab ich jetzt aber ganz einfach und pragmatisch gelöst - hab mir an einem Pin einen Toggle per Timer konfiguriert, der dann den Reset-Eingang alle paar Minuten für 1s auf Ground zieht und damit den Reset auslöst. Seit dem läuft's "stabil" (..dofern man das so nennen kann, wenn man dem Modul zyklisch eins auf die Mütze haut  :o).

Neues Problem:
Die Rück-Konfiguration des Reset-Pins bei der Task-Konfiguraton des PN532 lässt sich jetzt aber irgendwie nciht mehr auf "Node" zurückstellen.  >:( Im Log kamm daher auch immer ein Error dazu.
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

RaspiLED

Hi,
ich stelle mir gerade ein 45 Minuten Hörbuch vor, was jede Minute unterbrochen wird ;-)
Gruß Arnd


Gesendet von iPhone mit Tapatalk
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

parabacus

Ich resete ja nicht den WeMos, sondern nur den Chipleser, damit der immer "online" ist und jederzeit der gleich oder anderer Chip sicher gelesen werden kann.
Wie gesagt - ist mein erstes Projekt und scheinbar hat das Phänomen sonst noch keiner festgestellt.
Da's aber auf zwei physiklaisch unterschiedlichen Controllern gleichermassen auftritt und die Konfigurationsmöglichkeiten eher übersichtlich sind, gehe ich von einem Chip-Leser-Problem aus.
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

Frank_Huber

Zitat von: Joejoe am 16 Januar 2019, 18:41:13
Aktuell sieht es in den Rules so aus:

on RFID#Tag do
   TaskValueSet 2,1,1              // setze Device-Task-Nr.2, erster Dummy, Wert 1
   TaskValueSet 2,2,[RFID#Tag]     // setze Device-Task-Nr.2, zweiter Dummy, Tag des RFID-Chips
   TaskRun,2
   timerSet,1,1                    // Starte Timer 1 mit einer Sekunde
endon

on Rules#Timer=1 do                // Wenn Timer 1 abgelaufen (1 ist)
   TaskValueSet 2,1,0              // setze Device-Task-Nr.2, erster Dummy, Wert 0
   TaskValueSet 2,2,0              // setze Device-Task-Nr.2, zweiter Dummy, Wert 0
   TaskRun,2
endon


Ich setze den RFID-Tag auch in ein Dummy Device und auf 0 sobald der Chip weggenommen wird.
Allerdings wird der Wert nur nach dem Aktualisierungsintervall vom ESP an Fhem gesendet.

Das Leerzeichen hat das Handy eingefügt  >:( Ist in Fhem ohne Leerzeichen erstellt.

Ist das der richtige Syntax?
fhem("set ESPEasy_ESP_Easy_Playbox:SelectedBox " . $SonosTrack);

Gruß Joe
Vielleicht verstehe ich es nicht ganz, aber wozu das ganze Konstrukt in den rules wenn der espeasy dummy jede sekunde an fhem sendet?
Da kannst ja gleich den rfid Leser senden lassen.
Der macht das auch einmal die Sekunde. Auch ganz ohne rules. [emoji6]

Gesendet von meinem Doogee S60 mit Tapatalk


Frank_Huber

Hab jetzt mal beide Versionen getestet.

die FHEM Variante benötigte bei mir im Whatchdog 7 Sekunden um stabil durchzulaufen und nicht ungewollt zu stoppen.
Hier ist die Rules Variante klar im Vorteil. Hier wird der Wechsel am Reader lokal erkannt und nur die Reaktion kommt evtl verzögert.

Mit den Rules habe ich im Schnitt eine Reaktionszeit von 2 Sekunden. mit Whatchdog beim wegnehmen ca 8 (7 vom Whatchdog, 1 für Kodi zum Befehl ausführen.


Was ich nur nicht verstehe, die Rule ändert mir die Tag Werte.

Rule:
on RFID#Tag do
   TaskValueSet 3,1,1              // setze Device-Task-Nr.3, erster Dummy, Wert "present"
   TaskValueSet 3,2,[RFID#Tag]      // setze Device-Task-Nr.3, zweiter Dummy, Tag des RFID-Chips
   TaskRun,3
   timerSet,1,1                    // Starte Timer 1 mit einer Sekunde
endon

on Rules#Timer=1 do                // Wenn Timer 1 abgelaufen (1 ist)
   TaskValueSet 3,1,0              // setze Device-Task-Nr.3, erster Dummy, Wert "absent"
   TaskValueSet 3,2,0              // setze Device-Task-Nr.3, zweiter Dummy, Wert 0
   TaskRun,3
endon


Ergebnis im Anhang.

2610951181 wird zu 2610951168
72772698    wird zu    72772696
74467418    wird zu    74467416
75985498    wird zu    75985496
3071250732 wird zu 3071250688

Ich mein, ich kann das ja in FHEM entsprechend abfangen, aber warum macht er das?
Ich habe keinerlei Formeln mit im Device.

Frank_Huber

Hat von euch keiner das Problem dass die Regeln die Karten-ID verändert?

parabacus

Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

Frank_Huber

Zitat von: parabacus am 22 März 2019, 21:16:48
Ich bin grad zufällig darüber gestolpert - vielleicht ist das dein Problem?

https://www.letscontrolit.com/forum/viewtopic.php?t=502#p3600
Danke,
Muss ich mal in Ruhe durchlesen. Am Montag im Büro z. B. [emoji56]
Auf den ersten Blick glaube ich aber nicht dass es das ist.
Da ist ja die Rede vom http connector der die Daten beim Senden verändert.
Ich sehe ja aber auch unter den devices verschiedene Nummern. Die Rule verändert das.
Werd mir mal den Spass machen die binär strings zu vergleichen. Vielleicht gibt's da ja Auffälligkeiten...

Gesendet von meinem Doogee S60 mit Tapatalk


Frank_Huber

Moin moin,

Eine Info hier noch. Die Änderungen der Karten UIDs kommt vom espeasy. Dort gibt es einen Thread dazu:
https://github.com/letscontrolit/ESPEasy/issues/2418

Heute treibt mich aber eine andere Sache in den Thread hier,
Ich habe ein unschönes Verhalten wenn ein Ordner viele Audio-Folgen enthält.
Immer beim Tag auflegen sage ich Kodi er soll Ordner X abspielen. Da drin sind ca 100 Folgen eines Kinder Hörspiels.
Er beginnt aber blöder Weise immer bei Titel 1.

Habe schon versucht beim Stop Befehl den aktuellen Titel in einen Dummy zu sichern und dann diesen mit dem Tag abzuspielen.
Bringt aber auch keinen Erfolg weil er dann nur diesen einen Titel abspielt in Dauerschleife.

Mediaplayer ist ein aktuelles Libreelec mit Kodi 18.

Jemand ne Idee?
Gibt es evtl in Kodi eine Einstellung?

Danke und schönen Feiertag!

Gesendet von meinem Doogee S60 mit Tapatalk


Frank_Huber

Zitat von: Frank_Huber am 30 Mai 2019, 10:04:51
Ich habe ein unschönes Verhalten wenn ein Ordner viele Audio-Folgen enthält.
Immer beim Tag auflegen sage ich Kodi er soll Ordner X abspielen. Da drin sind ca 100 Folgen eines Kinder Hörspiels.
Er beginnt aber blöder Weise immer bei Titel 1.

Habe schon versucht beim Stop Befehl den aktuellen Titel in einen Dummy zu sichern und dann diesen mit dem Tag abzuspielen.
Bringt aber auch keinen Erfolg weil er dann nur diesen einen Titel abspielt in Dauerschleife.

Mediaplayer ist ein aktuelles Libreelec mit Kodi 18.

Jemand ne Idee?
Gibt es evtl in Kodi eine Einstellung?

keine(r) eine Idee?

FHEm2005

Vor einigen Jahren hatte ich ebenfalls die Idee, meine Squeezeboxen über RFID zu steueren. Heraus kam Duinosqueeze. Die Umsetzung zur funktionierenden RFID_Maschine habe ich in dem Blog http://duinosqueeze.blogspot.com/ aufgeschrieben.

Ich habe nach diesem Muster alle meine CD's "umgerüstet". Senderwahl, und Umschaltung eines Stream innerhalb der Player geschieht alles mit RFID. Jetzt habe ich auch einige SONOS1 und bin kurz davor weigstens die Senderwahl per RFID zu realisieren.

Vielleicht kann der eine oder andere Leser/in etwas vom Inhalt gebrauchen.

Für Interessierte habe ich den Bloginhalt als PDF angefügt

Grüße
Eberhard

(Edit)PDF angefügt und Fehler beseitigt.
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM