Hallo,
ich bin absoluter Newbie. Habe mich mit Hilfe des Forum so weit voran gebracht das ich MQTT / Mosquitto installiert habe und zeitgesteuert einen fixen Text über MQTT an NodeRed senden kann.
define a7 at +*00:00:05 set mosquitto publish /smarthome TestZeit
sendet z.B. alle 5 Sekunden das Wort "TestZeit" an NodeRed.
So weit so gut.
Aber ich habe eigentlich die Variable Dummy TestZeit angelegt um dynamisch die Systemzeit übertragen zu können
define TestZeit dummy
define at_TestZeit at +*00:00:05 {my $t=substr($hms,0,5);; fhem("set TestZeit $t")}
Aber leider wir nur das Wort TestZeit übertragen und nicht der Inhalt.....
Irgendwie hat es bei mir noch nicht klick gemacht.....
Wäre super wenn Ihr mir einen Tip geben könntet!
Hi,
ich habe jetzt nicht verstanden, was nicht geht.
Das zweite at sollte dir alle 5 sec die aktuelle Zeit in den dummy schreiben - funktioniert bei mir.
Das Ganze ändert nichts an deinem ersten at - welches stur nur den String übermittelt. Du wolltest das ändern? In den Inhalt von Testzeit?
Dann so:
defmod a7 at +*00:00:05 set mosquitto publish /smarthome [TestZeit]
Gruß Otto
Danke schon mal, aber ich kapiers leider nicht :( - sorry bin halt Anfänger und am lernen....
Ich habe jetzt alles damit zusammen hängende gelöscht und folgenden Code eingegeben:
define TestZeit dummy
define a7 at +*00:00:05 set mosquitto publish /smarthome [TestZeit]
define at_TestZeit at +*00:00:05 {my $t=substr($hms,0,5);; fhem("set TestZeit $t")}
Das Ergebnis ist das gleiche, jetzt halt mit eckigen Klammern - Es wird das Wort [Testzeit] im Node Red ausgegeben > siehe Screenshot
Gruß
Michael
Noch eleganter und ganz ohne substr():
defmod a7 at +*00:00:05 {fhem("set mosquitto publish /smarthome $hour:$min");;fhem("set TestZeit $hour:$min")}
Welchen Sinn hat eigentlich das dummy device?
Zitat von: good_mike am 01 November 2020, 11:04:59
Das Ergebnis ist das gleiche, jetzt halt mit eckigen Klammern - Es wird das Wort [Testzeit] im Node Red ausgegeben > siehe Screenshot
Hallo Michael,
dann macht Dein mosquitto Device etwas anders als andere FHEM Geräte und verarbeitet den set magic Syntax offenbar nicht.
Ich habe das gerade mit meinem MQTT2 Geräten (CLIENT UND SERVER) getestet, da funktioniert das genau so.
Dann hast Du nur die Möglichkeit, den Syntax von betateilchens Beispiel zu verwenden und den Publish String in Perl zusammensetzen.
Gruß Otto
ZitatIch habe das gerade mit meinem MQTT2 Geräten (CLIENT UND SERVER) getestet, da funktioniert das genau so.
Bei mir nicht, hab ich vorhin aus Interesse mal ausprobiert.
siehe Reading lastPublish:
defmod mqtt2s MQTT2_SERVER 1883 global
setstate mqtt2s 2020-11-01 11:50:46 RETAIN {"homeassistant/music_player/RINCON_000E58F7F67C01400/sonos/config":"{\u0022available_commands\u0022:[\u0022adv-command\u0022,\u0022clearqueue\u0022,\u0022command\u0022,\u0022joingroup\u0022,\u0022leavegroup\u0022,\u0022mute\u0022,\u0022next\u0022,\u0022notify\u0022,\u0022pause\u0022,\u0022play\u0022,\u0022playmode\u0022,\u0022previous\u0022,\u0022queue\u0022,\u0022seek\u0022,\u0022selecttrack\u0022,\u0022setavtransporturi\u0022,\u0022sleep\u0022,\u0022speak\u0022,\u0022stop\u0022,\u0022switchtoline\u0022,\u0022switchtoqueue\u0022,\u0022switchtotv\u0022,\u0022toggle\u0022,\u0022unmute\u0022,\u0022volume\u0022,\u0022volumedown\u0022,\u0022volumeup\u0022],\u0022command_topic\u0022:\u0022sonos/RINCON_000E58F7F67C01400/control\u0022,\u0022device\u0022:{\u0022identifiers\u0022:[\u0022RINCON_000E58F7F67C01400\u0022],\u0022manufacturer\u0022:\u0022Sonos\u0022,\u0022name\u0022:\u0022Wohnzimmer\u0022},\u0022device_class\u0022:\u0022speaker\u0022,\u0022icon\u0022:\u0022mdi:speaker\u0022,\u0022json_attributes\u0022:true,\u0022json_attributes_topic\u0022:\u0022sonos/RINCON_000E58F7F67C01400\u0022,\u0022name\u0022:\u0022Wohnzimmer\u0022,\u0022state_topic\u0022:\u0022sonos/RINCON_000E58F7F67C01400\u0022,\u0022unique_id\u0022:\u0022sonos2mqtt_RINCON_000E58F7F67C01400_speaker\u0022,\u0022availability_topic\u0022:\u0022sonos/connected\u0022,\u0022payload_available\u0022:\u00222\u0022}","sonos/RINCON_000E58F7F67C01400":"{\u0022uuid\u0022:\u0022RINCON_000E58F7F67C01400\u0022,\u0022name\u0022:\u0022Wohnzimmer\u0022,\u0022groupName\u0022:\u0022Wohnzimmer\u0022,\u0022coordinatorUuid\u0022:\u0022RINCON_000E58F7F67C01400\u0022,\u0022currentTrack\u0022:{\u0022AlbumArtUri\u0022:\u0022http://192.168.188.23:1400/getaa?u=x-rincon-mp3radio:%2f%2fhttp:%2f%2fopml.radiotime.com%2fTune.ashx%3fid%3de88185605%26sid%3ds2485%26formats%3daac,mp3,hls%26partnerId%3drjyYMwEH%26serial%3dAHFLNOA3T2XT6VWH2BAPMLPWOGLA&v=85\u0022,\u0022Title\u0022:\u0022102.8 Radio Regenbogen Heidelberg\u0022,\u0022UpnpClass\u0022:\u0022object.item\u0022,\u0022ItemId\u0022:\u0022-1\u0022,\u0022ParentId\u0022:\u0022-1\u0022,\u0022TrackUri\u0022:\u0022x-rincon-mp3radio://http://opml.radiotime.com/Tune.ashx?id=e88185605&sid=s2485&formats=aac,mp3,hls&partnerId=rjyYMwEH&serial=AHFLNOA3T2XT6VWH2BAPMLPWOGLA\u0022,\u0022ProtocolInfo\u0022:\u0022x-rincon-mp3radio:*:*:*\u0022},\u0022enqueuedMetadata\u0022:{\u0022AlbumArtUri\u0022:\u0022https://cdn-radiotime-logos.tunein.com/s2485q.png\u0022,\u0022Title\u0022:\u0022102.8 Radio Regenbogen Heidelberg\u0022,\u0022UpnpClass\u0022:\u0022object.item.audioItem.audioBroadcast\u0022,\u0022ItemId\u0022:\u0022-1\u0022,\u0022ParentId\u0022:\u0022-1\u0022},\u0022transportState\u0022:\u0022STOPPED\u0022,\u0022playmode\u0022:\u0022NORMAL\u0022,\u0022ts\u0022:1604227846481,\u0022volume\u0022:{\u0022Master\u0022:18,\u0022LF\u0022:100,\u0022RF\u0022:100},\u0022mute\u0022:{\u0022Master\u0022:false,\u0022LF\u0022:false,\u0022RF\u0022:false},\u0022bass\u0022:3,\u0022treble\u0022:-5}","sonos/connected":"2","tele/DVES_55F827/LWT":"Offline"}
setstate mqtt2s 2020-11-01 12:33:21 lastPublish /smarthome:[TestZeit]
setstate mqtt2s 2020-11-01 12:33:33 nrclients 2
setstate mqtt2s 2020-10-24 17:05:36 state Initialized
defmod TestZeit dummy
setstate TestZeit 12:36
setstate TestZeit 2020-11-01 12:36:24 state 12:36
Zitat von: Otto123 am 01 November 2020, 12:29:16
dann macht Dein mosquitto Device etwas anders als andere FHEM Geräte und verarbeitet den set magic Syntax offenbar nicht.
Ich habe das gerade mit meinem MQTT2 Geräten (CLIENT UND SERVER) getestet, da funktioniert das genau so.
Zitat von: TomLee am 01 November 2020, 12:37:15
Bei mir nicht, hab ich vorhin aus Interesse mal ausprobiert.
Bei mir funktioniert der Vorschlag von Otto auch nicht.
Also ok ich habe eine MQTT2_Client. Der verbindet sich zu einem MQTT2 Server
Dort mach ich
set mqtt2c publish -r home/states/fuehler1/temperature [fuehler3:temperature]
lastPublish home/states/fuehler1/temperature:25 2020-11-01 12:53:46
Ok ich teste nochmal mit einem Server...
Edit: geht dort auf die gleiche Art.
lastPublish home/states/fuehler1/temperature:25 2020-11-01 12:59:41
Parallel zu Deinem Schreiben habe ich gerade folgendes getestet:
+*00:00:05 set mqtt2 publish /smarthome [TestZeit:state]
Und DAS funktioniert :)
2020-11-01 13:00:06 MQTT2_CLIENT mqtt2 lastPublish: /smarthome:12:34
Trotzdem würde ich sowas nicht mit einem dummy und substr() lösen, wenn es die benötigten Werte ohnehin schon als Variablen gibt.
Das war jetzt noch meine Idee: STATE geht eventuell nicht?
Also nur [device] wird nicht aufgelöst - warum ist das so?
Edit: gegencheck: [fuehler1] funktioniert nicht!
Zitat von: Otto123 am 01 November 2020, 12:58:07
Edit: geht dort auf die gleiche Art.
Ja, wie gesagt. Die Kombination [device:reading] funktioniert, nur das [device] anzugeben (wie von Dir ursprünglich vorgeschlagen) funktioniert nicht.
Zitat von: Otto123 am 25 Oktober 2020, 20:43:41
Dann so:
defmod a7 at +*00:00:05 set mosquitto publish /smarthome [TestZeit]
Zitat von: Otto123 am 01 November 2020, 13:01:55
Das war jetzt noch meine Idee: STATE geht eventuell nicht?
mit STATE sollte man überhaupt nie arbeiten, maximal mit state... ;)
Ich bin doof und wieder dem erlegen was in DOIF geht :'(
set magic kann das nicht nicht [device] es
muss [device:reading] sein!!!
https://fhem.de/commandref.html#set
SORRY für die Verwirrung
Zitatmit STATE sollte man überhaupt nie arbeiten, maximal mit state... ;)
Ich weiß :)
Zitat von: Otto123 am 01 November 2020, 13:09:23
Ich bin doof und wieder dem erlegen was in DOIF geht :'(
DOIF... die Wurzel allen Übels...
ZitatZitat von: betateilchen am 01 November 2020, 11:37:45
Noch eleganter und ganz ohne substr():
defmod a7 at +*00:00:05 {fhem("set mosquitto publish /smarthome $hour:$min");;fhem("set TestZeit $hour:$min")}
Welchen Sinn hat eigentlich das dummy device?
Funktioniert :) - Vielen Dank!!
Jetzt muss ich nur noch verstehen warum und wie die zitierte Lösung wirklich funktioniert. Ich mach das Ganze ja um zu lernen und verstehen. Könnt Ihr mir da vielleicht noch ein Tip geben?