[Gelöst] Zeit aus Fhem mitsenden z.B. in Telegram

Begonnen von harway2007, 03 Februar 2019, 12:55:27

Vorheriges Thema - Nächstes Thema

harway2007

der Code liefert leider nur den Inhalt von $EVENT
und ich bekomme keine Zeit mitgesendet:

my $timestamp = time();
set fhembot msg @xxxxxxxxx $EVENT $timestamp | vom PI1 gesendet

auch geprüft mit {$hms} oder {qx(date +%R)}
was ist zu beachten ?

Otto123

#1
Hi,

Du mischst Perl mit FHEM Kommandos
my $timestamp = time(); ist Perl
set fhembot msg @xxxxxxxxx $EVENT $timestamp | vom PI1 gesendet ist FHEM
btw:  time() liefert eine Zahl, nicht als Zeit human readable  :D

So müsste es gehen (Test für die FHEM Kommandozeile).
Alles in Perl:
{my $timestamp = time();;fhem("set fhembot msg \@xxxxxxxxx $EVENT $timestamp | vom PI1 gesendet")}
Wegen dem @ bin ich nicht sicher, soll es als zeichen erhalten bleiben muss es geschützt werden -> \@

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

$hms enthält die aktuelle Uhrzeit in einem einfach lesbaren Format.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

harway2007

#3
habs noch nicht  :) - in der Befehslzeile:
a. $EVENT rausgenommen da er zum Fehler : Global symbol "$EVENT" requires explicit package führte
b. weil Inhalt - wie du richtig sagtest kryptisch ist - $hms genommen:

{my $timestamp = $hms ;; fhem("set fhem27bot msg \@xxxxxxx $timestamp | vom PI1 gesendet")}
ergibt auf dem Smartphone 17:59:18 usw.

nachdem ich den Code in das Alias einfügte bekam ich den Fehler:
Unknown command {my, try help.

say .* AS set MyTTS tts '$EVENT'; set MyTTS29 tts '$EVENT'; set MyTTS57 tts '$EVENT';
{my $timestamp = $hms ;; fhem("set fhem27bot msg \@xxxxxxx $EVENT $timestamp | vom PI1 gesendet")}


Ich weiss also nicht wie man diesen Mischcode aus Fhem und Programmiersprache einbringt. Ich dachte die Logic von ;; und \@ und den Aufruf fhem verstanden zu haben  ::)

 

betateilchen

$hms ist doch schon eine perl-Variable...


{ fhem("set fhem27bot msg \@xxxxxxx $EVENT $hms | vom PI1 gesendet")}

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

#5
In deinem ?Alias? mischst Du ja nun wieder  :-[
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

harway2007

#6
 :o  { fhem("set fhem27bot msg \@xxxxxxx $EVENT $hms | vom PI1 gesendet")}
oder fhem("set fhem27bot msg \@xxxxxxx $EVENT $hms | vom PI1 gesendet")
oder set fhem27bot msg @xxxxxxx $EVENT $hms | vom PI1 gesendet

liefern in dem Alias die Fehler : Unknown command fhem("set, try help. bzw.
Unknown command {, try help. bzw. Inhalt von Event und bei $hms eben $hms
und das ursprüngliche Beispiel war eine selbst bestimmte Variable, sodass man etwas beliebiges hätte senden können ... ich nutze soetwas an div. Stellen sehe meinen Fehler aber nicht :

{fhem("set RolloLinks off")};
set Kaffee on;
set fhem27bot msg @xxxxxxxx per Schalter 1 hoch ausgelöst | Titel Rollo hoch Kaffe an;
set Gong1 playTone 43

mache ich daraus
set fhem27bot msg @xxxxxxxx per Schalter 1 hoch ausgelöst $EVENT $hms | Titel Rollo hoch Kaffe an;
kommen alle Events richtig und hms wieder falsch als $hms  :-[
hier noch mal das Alias:
say .* AS set MyTTS tts '$EVENT'; set MyTTS29 tts '$EVENT'; set MyTTS57 tts '$EVENT';
set fhem27bot msg @xxxxxxx $EVENT $hms | vom PI1 gesendet

...

Otto123

Du kannst eigentlich sowas im set Befehl nutzen:
set Willi {($hms)}
In der Doku unter dem Begriff set magic zu finden.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

harway2007

#8
ok gemacht - dummy Willi nimmt jetzt die Uhrzeit so weit so gut!
jetzt muss ich es noch senden :
set Willi {($hms)};
set fhem27bot msg @xxxxxxxx $EVENT "Willi" | vom PI1 gesendet

"Willi" oder ${Willi} ${"Willi"} gehen nicht

Otto123

#9
 :o
Was willst Du mit Willi? das war doch nur ein Beispiel  ::) :-[
So versucht?
set fhem27bot msg @xxxxxxxx $EVENT {($hms)}
Ob das so mittendrin geht? keine Ahnung ...
In einem test mit einem Dummy geht es auch mittendrin
set Willi {($hms)} Uhr

Zitat"Willi" oder ${Willi} ${"Willi"} gehen nicht
Wenn Du meinen Link gelesen hättest  ;D
Wenn dann so: [Willi] oder [Willi:state]
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

harway2007

#10
 8) :-*  mit $EVENT {($hms)} kommt die Uhrzeit - das klappt - DANKE...
teste jetzt noch den Willi  ;D
... bereits gemacht - Willi geht auch nochmals Danke habs auch kapiert !!!!
set Willi {($hms)} Uhr;
set fhempi957bot msg @xxxxxx $EVENT {($hms)} [Willi:state] | PI55

Doppel Uhrzeit  ;D

Otto123

Wieder mit set magic?
[Willi] oder [Willi:state] oder [NameeinesbeliebigenFHEMGerätes:NameEinesBeliebigenReadingsDiesesGerätes]

Aber sowas geht natürlich auch:
set wert {(my $val = Value("Aktor01");;return $val)} Uhrzeit
das return $val ist hier überflüssig, wollte nur zeigen das auch eine Befehlsfolge geht.
Und sicher geht auch {(Subroutine-In-99_myUtils)}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz