Meldung in Reading statt ins Logbuch

Begonnen von DL8EI Ralph, 25 Mai 2023, 14:39:56

Vorheriges Thema - Nächstes Thema

DL8EI Ralph

Hallo,
wie bekommt man diese Rück-Meldung2023.05.25 08:45:06 3: atChkSMS: -1
Sende SMS 1/1....warte auf Netz-Bestätiung..OK, Nachricht-Referenz=173
Drücken Sie Strg-C, wenn Sie unterbrechen möchten...
in ein auswertbares Reading statt ins Logbuch ?
Hat jemand bitte eine Idee?
Fernmelde-Opa übernahm FHEM-Installation und kämpft sich so durch.
Installation hat FS20, Homematic und einge exotische Teile.

MadMax-FHEM

Wenn du noch mitteilen würdest was du da überhaupt tust?
Du löst etwas per at aus?
System-Befehl/Shell-Kommando?

Dann musst du das wohl entweder im Shell-Script in ein Reading schreiben (falls es nur ein Shell-Befehl ist -> Script drumrum und dann dort in ein Reading schreiben)...
...oder den Befehl anders aufrufen und dann den Rückgabewert in ein Reading schreiben.

Aber ohne zu wissen was du (genau) tust wird es schwer zu helfen.

Steht aber alles hier: https://forum.fhem.de/index.php?topic=71806.0

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Jamo

Das sollte so gehen, für den Fall das Du gammu aus einem Shell script startest.
Hier ungetestet mal ein Bash shell Script "mySMS.sh", mit dem das gehen sollte, und das man aus fhem raus starten kann.
Die Telefonnummer und der Text wird an das bash script übergeben.
Die System message wird in die varaible $returnValue übergeben.
In ein reading bekommst Du es, mit dem echo -n . . .
 
#!/bin/bash
# exit immediately if no parameters supplied
if [ $# -lt 2 ] ; then
    echo "UNDEF, keine nummer und/oder text spezifiziert"
    echo "USAGE: ./mySMS.sh +49123456789 'test sms von gammu'"
  exit 1
fi

NUMMER=$1
TEXT=$2

# System Message in variable schreiben
$returnValue=$(gammu sendsms TEXT "$1" -text "$2")

$ variable in reading von device schreiben
echo -n "$(wget -q -O - "http://DE.IN.E.IP:PORT/fhem?cmd=setreading%20device%20reading%20$returnValue&XHR=1")"

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

betateilchen

Zitat von: Jamo am 25 Mai 2023, 20:18:55In ein reading bekommst Du es, mit dem echo -n . . .

Wenn man eh schon auf Betriebssystemebene ist, geht das aber auch einfacher und ohne den echo-Krampf.

perl /opt/fhem/fhem.pl 7072 "setreading testDevice testReading testWert"
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jamo

ZitatWenn man eh schon auf Betriebssystemebene ist, geht das aber auch einfacher und ohne den echo-Krampf.
Ja, dann muss aber ein telnet device definiert sein, das habe ich nicht.

Hier im Forum auch nochmal die Lösungen zur gleichen Fragestellung: https://forum.fhem.de/index.php?topic=79082.0
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

Otto123

#5
Zitat von: Jamo am 25 Mai 2023, 20:18:55In ein reading bekommst Du es, mit dem echo -n . . .
In deinem Beispiel müsste aber csrf Token ausgeschaltet sein - was nicht empfehlenswert ist!  (steht auch in deinem Link :) )
Wie man damit umgehen kann steht hier https://wiki.fhem.de/wiki/CsrfToken-HowTo

Für die Anwendung das Telnet Device zu definieren ist für die meisten User ev. wieder einfacher. :) Das Telnet "Loch" ist immer noch besser als einfach csrf zu deaktivieren.
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

MadMax-FHEM

Zitat von: Otto123 am 26 Mai 2023, 09:40:50Das Telnet "Loch" ist immer noch besser als einfach csrf zu deaktivieren.
Und es lässt sich doch auch nur lokal öffnen ;)

Also im DEF ohne "global", dann geht es nur localhost...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Wernieman

Also um Daten vom Script zu FHEM zu Pushen gibt es doch schon viele Lösungen .. müssen wir das hier nochmals "durchdiskutieren"?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

frank

auf einträge in fhem.log kann man auch ein notify triggern lassen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

DL8EI Ralph

Moin und Danke zunächst,
den Posts #1 - #6
kann ich mangels Wissen nicht folgen und versuche mich einzulesen.

zu Post #9
Mit fast 9000 Posts bist Du soweit voraus, dass das aus Deiner Sicht gewiß zutrifft.
Aus meiner Anfänger-Sicht bin ich mit der Fülle der möglichen Lösungen schlichtweg überfordert.

Zitat von: frank am 26 Mai 2023, 12:27:15auf einträge in fhem.log kann man auch ein notify triggern lassen.
Das schien für mich am verständlichsten und das habe ich auch probiert
Mein Notify:
Internals:
   CFGFN     
   DEF        n_LogFehler:.*Fehler.* {}
   FUUID      6470a817-f33f-a76b-18b6-826164c60c722ddf
   NAME       n_LogFehler
   NOTIFYDEV  n_LogFehler
   NR         133550
   NTFY_ORDER 50-n_LogFehler
   REGEXP     n_LogFehler:.*Fehler.*
   STATE      active
   TRIGGERTIME 1685106514.87943
   TYPE       notify
   eventCount 10
   READINGS:
     2023-05-26 15:10:00   state           active
     triggeredByDev:
       TIME       
       VAL        n_LogFehler
funktioniert  nicht auf den von mir gesuchten Log-Eintrag "Fehler"
Fehler beim Öffnen des Geräts, es existiert nicht.
Fehler beim Öffnen des Geräts, es existiert nicht.

Aber warum nicht ???

Es geht aber mit anderer REGEX "FS20" richtig auf die Logbucheintröge
2023.05.26 15:08:27 3: n_LogFehler return value: HASH(0x4a12bc8)
2023.05.26 15:08:27 3: FS20 set X6 off
2023.05.26 15:08:22 3: n_LogFehler return value: HASH(0x5475168)
2023.05.26 15:08:22 3: FS20 set X6 on
Fernmelde-Opa übernahm FHEM-Installation und kämpft sich so durch.
Installation hat FS20, Homematic und einge exotische Teile.

Otto123

#10
Du hast die Doku nicht gelesen :( und das entscheidende attribute vergessen
https://fhem.de/commandref_DE.html#notify
ZitatAttribute
...
readLog
Das notify wird für Meldungen, die im FHEM-Log erscheinen, ausgegeführt. Das "Event-Generierende-Gerät" wird auf dem notify selbst gesetzt. Z.Bsp. kann man mit folgendem notify auf die Startup Meldung reagieren:
define n notify n:.*Server.started.* { Log 1, "Wirklich" }
attr n readLog
Oder Du hast nur die Hälfte gepostet. Auf alle Fälle sehe ich in dem Stückchen in deinem Post #1 kein einziges Wort Fehler - also warum das Suchmuster .*Fehler.* ?

Was funktioniert:  ;D
define n notify n:.*Fehler.* {}
attr n readLog 1
Und dann ein Log Eintrag erzeugen. Im Device sieht man das getriggert wurde ;)
{Log 1,'Ein Fehler ist eingetreten'}
Aber ich würde mir die erstgenannten Möglichkeiten anschauen und diesen vermurksten Log Eintrag vermeiden.
Hast Du ein telnet Device?
list TYPE=telnetWenn nicht dann:
define telnetPort telnet 7072 Dann in Deinen Scriptcode die Zeile von betateilchen richtig einbauen.
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

DL8EI Ralph

Ja, war unvollständig, hatte natürlich attr n_LogFehler readLog 1 drin, wobei
die 1 nicht dokumentiert ist, habe ich selber "erspielt".

Oben habe ich ja auch gesagt, dass die notify funktioniert nur eben nicht auf den Logbucheintrag
Fehler beim Öffnen des Geräts, es existiert nicht.
Der kommt nämlich ohne Datum und andere Angaben davor.
Könnte das der Grund sein, dass das nicht notifyiert wird ?
Fernmelde-Opa übernahm FHEM-Installation und kämpft sich so durch.
Installation hat FS20, Homematic und einge exotische Teile.

Otto123

Vermutung:
Es handelt sich um eine Meldung eines aus FHEM aufgerufenen Programmes. Diese landet als Ausgabe über stdout im FHEM Logfile.
Kann sein, dass in dem Fall ein solches notify nicht reagiert. Müsste man mal gezielt probieren.

Die Alternative wurde ja schon aufgezeigt ;)
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

frank

wenn dies exakt dein 3-zeiliger logeintrag war/ist:
2023.05.25 08:45:06 3: atChkSMS: -1
Sende SMS 1/1....warte auf Netz-Bestätiung..OK, Nachricht-Referenz=173
Drücken Sie Strg-C, wenn Sie unterbrechen möchten...

dann versuche erst mal nur einen teil der fehlermeldung für die DEF deines notifys.
leerzeichen und zeilenumbrüche mindestens durch "punkte" ersetzen, sonderzeichen eventuell auch, also zb mal so:
n_LogFehler:.*warte.auf.Netz.* {}
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

betateilchen

Es wäre halt doch hilfreich, wenn wir mal ein list des FHEM devices hätten, bei dessen Aktivität diese Meldung überhaupt erzeugt wird.

Und das hat grundsätzlich nix damit zu tun, ob jemand 5 Beiträge hat oder 9000.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!