Ich bin dabei ein neues Modul zur Integration des Synology Chat Servers zu erstellen.
Ziel ist es, ähnlich wie bei Telegram, Nachrichten zwischen FHEM und Synology Chat auszutauschen.
Vorteil dieser Lösung ist, dass man als Synology Besitzer auf keine public Cloud mehr angewiesen ist, sondern FHEM diesbezüglich wieder in seiner privaten Cloudumgebung integriert, so wie es bei dem SSCam-Kameramodul auch der Fall ist.
Dadurch bleiben die Daten "zu Hause". Mit der von Synology verfügbaren App für mobile Devices lässt sich die Kommunikation mit dem Server von unterwegs aufrecht erhalten.
Der aktuelle Entwicklungsstand kann einfach per Download mit diesem Befehl in der FHEM Kommandozeile bezogen werden. Bitte so komplett mit den Ausführungszeichen am Anfang und Ende eingeben:
"wget -qO ./FHEM/50_SSChatBot.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/50_SSChatBot.pm"
Danach FHEM restarten.
Die Dokumentation findet man zur Zeit erstmal nur im Wiki. Wenn der initiale Releasestand zum Einchecken erreicht ist, erstelle ich eine entsprechende Commandref.
Wiki: https://wiki.fhem.de/wiki/SSChatBot_-_Integration_des_Synology_Chat_Servers
Ich hoffe, dass dieses Modul weitere Anhänger findet. Ideengeber und Unterstützer bei der Weiterentwicklung sind immer willkommen.
LG,
Heiko
Das Modul ist bereits fortgeschritten. Es können Nachrichten in beiden Richtungen zwischen FHEM und Synology Chat ausgetauscht werden.
Außerdem ist es möglich, set- und get-Befehle auszuführen oder Perl-Code bzw. Subroutinen in FHEM auszuführen. In allen Fällen wird das Ausführungsergebnis zurück gesendet, sofern die ausgeführte Funktion es liefert.
Genaueres ist im Wiki beschrieben.
Über Testergebnisse weiterer (Synology)User würde ich mich freuen.
Grüße,
Heiko
Das Modul und das Wiki sind nun auch noch um die Definition User spezifischer Slash-Befehle (z.B. /Termine ...) ergänzt worden.
Hallo,
vielen Dank für das Modul. Bei mir funktioniert die Kommunikation zwischen der Diskstation und fhem einwandfrei. Weiter bin ich allerdings noch nicht gekommen.
Ich freue mich jedenfalls, dass es dieses Modul gibt. Damit kann man ggf. die gesamte Kommunikation, die ich bisher auf einem anderen Bot laufen hatte, auf meinem eigenen sicheren Server abwickeln.
Danke auch für die sehr gute Beschreibung der Installation und Einrichtung, sie hat mir sehr geholfen.
Gruß
Eberhard
Hallo Eberhard,
ich freue mich, dass dieses Modul dir nützlich ist.
Die Ablösung von public Cloudkomponenten war auch für mich der Antreiber zur Synology Chat Integration.
Wenn dir etwas auffallen sollte, zögere nicht es hier schreiben.
Grüße,
Heiko
Hallo Heiko,
Super geiles Modul. Vielen Vielen Vielen Dank dafür! Habe ich schon sehnlichst drauf gewartet.
Wenn ich in irgendeiner Art und Weise helfen kann, dann lasse es mich wissen.
Bin zwar kein Software Entwickler aber gern bereit dazu zu lernen.
Eine Frage habe ich: Ich verwende seither Telegram inkl. "interaktiver" Kommunikation.
Laut Synology soll so etwas auch mit dem Chatbot in einer stark vereinfachten "Button" Interaktion möglich sein.
https://www.synology.com/de-de/knowledgebase/DSM/help/Chat/chat_integration (https://www.synology.com/de-de/knowledgebase/DSM/help/Chat/chat_integration)
siehe Payload!
Kannst Du das irgendwann auch noch integrieren?
VG denny
Hallo Denny,
freue mich wenn es noch ein paar User gibt. :)
Der Vorteil ist eben die Konzentration auf die private Cloud. Ich hoffe auch sehr, dass Synology die Möglichkeiten dieser Anwendung noch erweitert.
Du meinst bestimmt den dargestellten payload mit dem Smiley :)
Ja, kann ich gerne mal demnächst tun. Wenn noch weitere User das Modul einsetzen, nehme ich es auch gerne in das offizielle Repository auf.
Grüße,
Heiko
Hallo Heiko,
Das wäre echt super wenn die [Payload] Kommando Struktur für die JSON Formatierung möglich wäre.
Der Hintergrund: Bisher verwende ich wie erwähnt Telegram für die Interaktion. Das mach ich nur sehr ungern.
Meine Daten behalte ich gern bei mir. :-) und Dein Ansatz bringt mich fast auf 100% in Kommunikation mit Fhem und dem Thema Homeautomation.
Und nun versuche ich das auf dem Chat umzuziehen.
Meinen Arbeitskollege habe ich auch schon überzeugt. :-)
Er liest sich gerade in Dein Kalender Modul ein.
Das ist auch absolut super!.
Vg Denny
Na bei soviel Lob und Enthusiasmus kann ich dich/euch ja garnicht so lange warten lassen. :D Vielen Dank dafür, freut mich !
Ich nehme die Erweiterung mal auf meine short ToDo Liste. Melde mich wenn ich was zum Testen entwickelt habe.
Hallo zusammen,
es steht die Version 1.3.0 zum Test bereit.
Neu ist:
* der set Befehl sendItem ist in 1_sendItem umbenannt jetzt asyncSendItem umbenannt
Grund: es ist mir schon oft passiert dass ich ungewollt den botToken zerschossen habe weil der Eintrag ganz oben auf der
Liste steht/stand. Jetzt ist es immer 1_sendItem asyncSendItem.
* es können interaktive Schaltflächen versendet und die Antwort des Users ausgewertet werden.
Beschreibung ist im Wiki unter https://wiki.fhem.de/wiki/SSChatBot_-_Integration_des_Synology_Chat_Servers#verschiedene_Arten_Nachrichten_an_Chatempf.C3.A4nger_senden
bzw.
https://wiki.fhem.de/wiki/SSChatBot_-_Integration_des_Synology_Chat_Servers#Interaktionen_mit_Schaltfl.C3.A4chen
zu finden.
Der Download ist auch im Wikiartikel gleich zu beginn beschrieben.
Viel Spaß beim Testen :)
Grüße,
Heiko
Ich habe noch das Reading recActionsValue eingeführt.
Es enthält die Extraktion des Wertes von value aus Reading recActions. D.h. dieses Reading enthält direkt den Antwortwert wenn der Chatuser einen zugesendeten Button drückt.
Dadurch kann man einfacher auf Tastendrücke reagieren und davon Steuervorgänge ableiten.
Grüße,
Heiko
Hallo miteinander,
ich weiß nicht warum, aber mich hat der Eintrag 1_sendItem rein ästhetisch derart gestört, dass ich über Alternativen nachgedacht habe.
Nun habe ich 1_sendItem nach asyncSendItem umbenannt. Damit bin ich nun sehr zufrieden, zumal der Name auch die interne Verfahrensweise zum Versand abbildet und immernoch auf Platz eins der set-Liste steht. :)
Sorry für die Umstände, aber so ist das manchmal mit der Entwicklung ...
Das Wiki passe ich auch noch an. -> erledigt.
LG,
Heiko
Hallo Heiko,
Super Klasse Erweiterung.
Habe etwas gespielt.
1. Frage oder Anmerkung habe ich: Besteht die Möglichkeit, das "value" auch direkt mit einem Inhalt für "recCommand" zu füllen?
Damit wäre es dann möglich ein Slash Command direkt in Fhem auszulösen ohne noch über den Inhalt z.b eines Notify oder DOIF zu gehen!
Ich hoffe ich verstehe das nicht falsch!
Vg Denny
Hallo Denny,
ich denke sowas könnte ich vorsehen. Ich schaue es mir an, weiß momentan noch nicht ob man dort "/" unterbringen kann oder ob die API dann streikt.
Melde mich ...
Hallo Heiko,
Habe gerade mal ein DOIF gebastelt. Das scheint zu funktionieren.
Das mit dem Own Command muss ich noch verstehen und testen!
VG denny
Hi Denny,
es war recht einfach umzusetzen und funktioniert sehr gut.
Man kann nun ein Slash Kommando direkt mit einer Schaltfläche an den Chat senden, z.B.:
text="Bitte bestätigen !"
attachments="[
{
"callback_id": "Bestaetigung", "text": "Drücke um Wetterdaten zu bekommen",
"actions":[
{"type": "button", "name": "response", "value": "/Wetter", "text": "Wetter", "style": "green"}
]
}
]"
Es muss "/Wetter" natürlich vorher als ownCommand definiert sein. Es geht auch sowas:
text="Bitte bestätigen !"
attachments="[
{
"callback_id": "Bestaetigung", "text": "Drücke um Lampe eionzschalten",
"actions":[
{"type": "button", "name": "response", "value": "/set Lampe on", "text": "Lampe an", "style": "green"}
]
}
]"
Deine Frage oben ist mir noch nicht klar.
Willst du auf einen Event von recActionsValue und dessen Wert per Notify reagieren und dann wiederum eine Schalterstruktur an den Chat senden ? Oder habe ich es falsch verstanden ...
Denn recActionsValue bringt ja als Reaktion auf den Tastendruck des Chatusers nur einen solchen Event:
2020-03-15 20:10:19.566 SSChatBot SynChatBot recActionsValue: Yes
Ich habe auch mal ein notify definiert:
defmod N.sendButton notify user:change:.ein set SynChatBot asyncSendItem \
text="Hallo ich bin Dein ChatBot! Was kann ich für Dich tun?" \
attachments="[{\
"callback_id": "menue", "text": "Wähle ein Menü aus!",\
"actions":[\
{"type": "button", "name": "responseHM", "value": "hm", "text": "Haputmenü", "style": "orange"},\
{"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"},\
{"type": "button", "name": "responseON", "value": "/set SW_TV on", "text": "TV An", "style": "green"},\
{"type": "button", "name": "responseOFF", "value": "/set SW_TV off", "text": "TV Aus", "style": "green"}\
]\
}]"
attr N.sendButton room Chat
Das reagiert auf "user:change:.ein" und sendet an den Chat die diversen Schaltflächen wie im Anhang.
Klappt :D
Grüße,
Heiko
Hallo Heiko,
Sau Gut. Das macht den DOIF Code viel einfacher und leichter anwendbar. Spart einiges an Zwischenschritten.
Damit hast DU die globale (set / get) direkt zur Verfügung gestellt. Klasse Arbeit. Bin echt dankbar.
Morgen gehts weiter.
Hier ein kleiner Anfnag.
1.Menü, 2. Schalter betätigen, 3. Sensoren abfragen
DEF
([SynChatBot:"^recText:./start$"]) (set SynChatBot asyncSendItem text="Hallo ich bin Dein ChatBot! Was kann ich für Dich tun?"
attachments="[
{
"callback_id": "menue", "text": "Wähle ein Menü aus!",
"actions":[
{"type": "button", "name": "responseHM", "value": "hm", "text": "Hauptmenü", "style": "orange"},
{"type": "button", "name": "responseSW", "value": "SW_MN", "text": "Schalter", "style": "green"},
{"type": "button", "name": "responseMS", "value": "SNS", "text": "Sensoren", "style": "green"},
{"type": "button", "name": "responseINF", "value": "INF", "text": "Info", "style": "green"}
]
}
]")
DOELSEIF
([SynChatBot:"^recActionsValue:.hm$"]) (set SynChatBot asyncSendItem text="Hallo ich bin Dein ChatBot! Was kann ich für Dich tun?"
attachments="[
{
"callback_id": "menue", "text": "Wähle ein Menü aus!",
"actions":[
{"type": "button", "name": "responseHM", "value": "hm", "text": "Hauptmenü", "style": "orange"},
{"type": "button", "name": "responseSW", "value": "SW_MN", "text": "Schalter", "style": "green"},
{"type": "button", "name": "responseMS", "value": "SNS", "text": "Sensoren", "style": "green"},
{"type": "button", "name": "responseINF", "value": "INF", "text": "Info", "style": "green"}
]
}
]")
DOELSEIF
([SynChatBot:"^recActionsValue:.bck$"]) (set SynChatBot asyncSendItem text="Wie kann ich Dir helfen?"
attachments="[
{
"callback_id": "menue", "text": "Wähle ein Menü aus!",
"actions":[
{"type": "button", "name": "responseHM", "value": "hm", "text": "Hauptmenü", "style": "orange"},
{"type": "button", "name": "responseSW", "value": "SW_MN", "text": "Schalter", "style": "green"},
{"type": "button", "name": "responseMS", "value": "SNS", "text": "Sensoren", "style": "green"},
{"type": "button", "name": "responseINF", "value": "INF", "text": "Info", "style": "green"}
]
}
]")
DOELSEIF
([SynChatBot:"^recActionsValue:.SW_MN$"]) (set SynChatBot asyncSendItem text="Schalter Auswahl!"
attachments="[
{
"callback_id": "menue", "text": "Was möchtest Du schalten",
"actions":[
{"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"},
{"type": "button", "name": "responseON", "value": "/set SW_Test on", "text": "TV An", "style": "green"},
{"type": "button", "name": "responseOFF", "value": "/set SW_Test off", "text": "TV Aus", "style": "green"}
]
}
]")
DOELSEIF
([SynChatBot:"^recActionsValue:.SNS$"]) (set SynChatBot asyncSendItem text="Sensor Werte lesen!"
attachments="[
{
"callback_id": "menue", "text": "Welchen Sensor möchtest Du abfragen?",
"actions":[
{"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"},
{"type": "button", "name": "responseMS_SNS", "value": "/SNS", "text": "Sensor1", "style": "green"},
{"type": "button", "name": "responseMS_SNS1", "value": "/SNS1", "text": "Sensor2", "style": "green"}
]
}
]")
Schönen Abend noch und vielen Dank!
VG Denny
Sieht gut aus :)
Habe die Möglichkeit noch im Wiki abgelegt:
https://wiki.fhem.de/wiki/SSChatBot_-_Integration_des_Synology_Chat_Servers#mehrere_Schaltfl.C3.A4chen_versenden_und_eine_Auswahl_empfangen
Dir auch noch einen schönen Abend !
Heiko
Hallo Heiko,
Wie gehts? Alle noch gesund? Die aktuelle Lage ist ja gnz schön angespannt. Passt auf Euch auf!
so bin gerade wieder am basteln und stoße gerade auf das Problem mit dem Versand von Bildern, Videos.
Im Wiki des Moduls und auch bei Synology ist nur folgendes angegeben:
set <Name> asyncSendItem text="letzte Aufnahme von Kamera" fileUrl="http://sdcam.myds.me:8081/surveillance/Hauseingang/20191124AM/Hauseingang-20191124-103741-1574588261.mp4"
Dabei wird immer die URL verwendet, also http.
Kann man das auch direkt von einem angegeben Ordner heraus versenden?
Ich möchte ungern extra einen Webserver Bereich nach außen aufmachen um die Daten an den Bot zu übergeben.
Dann wäre der Sinn diese Moduls nicht mehr der gleiche. Die Daten gehören ja mir.
Was mich allerdings wundert ist folgendes:
text="a fun image" fileUrl="https://user:passwd@192.168.178.44/web_images/HOFCAM_get_PIC_snapshot.jpg"
funktioniert auch nicht.
Da kommt eine Fehlermeldung:
illegal file name or path
2020-04-08 18:16:37
Errorcode
117
Vg Denny
Hallo Denny,
gesundheitlich ist alles ok., aber die Instabilität meiner Internetverbindungen bei Konferenzen macht mir echt schwer zu schaffen. :(
Zitat
Kann man das auch direkt von einem angegeben Ordner heraus versenden?
Ich möchte ungern extra einen Webserver Bereich nach außen aufmachen um die Daten an den Bot zu übergeben.
Meines Wissens und lt. Doku geht nur eine Web-Adresse. Aber einen Zugang musst du von außen deswegen nicht aufmachen. Du musst deine zu versendenen Bilder/Dateien nur für die Synology ! (den Chat-Server) zugreifbar machen.
Zum Beispiel zu den Schnappschüssen der Surveillance Station -> https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station#Vorbereitung_-_Erstellung_eines_virtuellen_Hosts_auf_Synology
Bezüglich deiner Fehlermeldung ... stimmt denn die Adresse ?
Wenn du das testest, wird ein Buchtitel (Bild) vom Chatserver geholt, eingebunden und an den Empfänger versendet:
text="a fun image" fileUrl="https://images-na.ssl-images-amazon.com/images/I/51hwjVziNJL._SX382_BO1,204,203,200_.jpg"
Klappt das bei dir ?
Unbekannt ist allerdings auch, ob der Chatserver die Mitgabe von User:Passwort in dieser Form unterstützt. Ist nirgends dokumentiert.
LG,
Heiko
Hallo Heiko,
oh blöd. Ich habe das Glück hier mit vollem Power am Netz zu hängen.
1Gbit von Vodafone. Bin sehr zufrieden und habe täglich ca. 10-15 Meetings.
Dazu arbeite ich 100% Remote an HIL Systemen für Software Tests.
Das klappt seither sehr gut sogar GLOBAL.
So der Link funktioniert. Ebenso mein LINK wenn ich die vorgelagerten Benutzerdaten am Webserver der Synology wieder raus nehme.
Nun muss ich mir überlegen wie ich einen reinen internen Webserver betreiben kann. Denn den der Synology benötige ich ja für alle Dienste die darauf laufen.
Ich möchte den ungern ohne password Schutz am laufen halten.
Danke Dir Heiko.
Vg Denny
Du kannst dir doch in der Webstation beliebige virtuelle Hosts einrichten. Das klappt für den Zweck ...
Danke Heiko.
Habe es so gelöst. VH angelegt der nach außen nicht erreichbar ist. URL wird sauber ausgelesen und Bilder kommen via BOT zu mir nachdem diese im DOIF angetriggert wurden.
Jetzt gehts an die Integration Deines SSCam Modul.
VG Denny
Hi,
super Modul, gefällt mir und habe auch direkt rumgespielt und auch direkt ne Frage.
in einem DOIF habe ich folgenden Zweig:
DOELSEIF
([Chat:"^recActionsValue:.SW_LI$"]) (set Chat asyncSendItem text="Schalter Auswahl!"
attachments="[
{
"callback_id": "menue", "text": "Was möchtest Du schalten",
"actions":[
{"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"},
{"type": "button", "name": "responseON", "value": "/set Licht on", "text": "Licht An", "style": "green"},
{"type": "button", "name": "responseOFF", "value": "/set Licht off", "text": "Licht Aus", "style": "green"}
]
}
]")
das Device Licht ist nur zum Test eingesetzt, ich wollte damit eigentlich mein Licht im Zimmer steuern, das den Namen HUEDevice1 hat.
setzte ich diesen Name ein, reagiert das Menü nicht mehr, also so:
{"type": "button", "name": "responseON", "value": "/set HUEDevice1 on", "text": "Licht An", "style": "green"},
bisher hat alles super geklappt, aber sobald ich ein Hue Device einsetze, klappt es nicht.
Natürlich könnte ich ein dummy und ein notify oder ähnlich benutzen, aber es ist schon komisch, das bisher alle anderen Devices (z.B. eine Ikea Lampe/Birne mit der Huebridge gekoppelt) funktionieren, das mit einem Huedevice aber nicht klappt.
ist das ein Bug?
Was braucht Ihr?
Freue mich auf jede Hilfe
Gruß
Ralf
Hallo Ralf,
ja, das ist ein Bug der mit dem Leerzeichen vor einem großen "H" zu tun hat.
Das ist eine mysteriöse Sache die ich mit Rudi noch klären wollte.
Bislang habe ich einen Workaround für normalen Text (mit "H") eingebaut. Für attchements habe ich es vergessen, sorry.
Du kannst mal versuchen den String so aufzubauen:
{"type": "button", "name": "responseON", "value": "/set%20HUEDevice1 on", "text": "Licht An", "style": "green"},
oder du benennst HUEDevice1 um in z.B. WoZiHUEDevice1. Hauptsache kein führendes "H". ;)
Morgen nach dem Feiertag baue ich noch den Bugfix für attachements ein.
LG,
Heiko
:D :D
ja wie cool ist denn der Bug? hahaha, ich probiers mit %20 mal
Daaaaanke :)
Gruß Ralf
--- getestet und für funktionsfähig befunden :) ---
Ja der ist nicht schlecht, oder ? Was meinst du wie lange ich gebraucht habe diesen Zusammenhang rauszufinden ? :D :D
Edit: und vor allem ein kleines "h" ist kein Problem 8) :o
Schönen Feiertag !
Morgen stelle ich eine gefixte Version bereit. Kannst dann ja mal Tester sein. :)
LG,
Heiko
Hallo Ralf,
ich habe die neue Version des SSChatBot in mein contrib geladen.
Bitte restarten wenn du das File heruntergeladen hast.
Und auch nicht vergessen das %20 wieder herauszunehmen.
Das macht jetzt das Modul (sollte es :) )
Grüße,
Heiko
Hallo Heiko,
habe es direkt getestet sieht gut aus, siehe Dateianhang.
Kann irgendwie das Bild nicht anders einfügen
Auf jeden Fall klappt es jetzt
Gruß
Ralf
Hallo Heiko,
tolles Modul, funktioniert sehr gut und ist einfach einzurichten.
Lassen sich damit eigentlich auch plots verschicken? Ich habe das in Telegram genutzt um mir Temperatur-Verläufe schicken zu lassen.
Dabei habe ich immer die Funktion {plotAsPng()} verwendet.
Danke schonmal für die Antwort.
Reinhard
Hallo Reinhard,
Synology hat es bisher so implementiert, dass man einen Link zu einer Datei/Bild angeben kann. Diese Datei/Biild wird dann vom Chat-Server an den User gesendet. D.h. die Datei muß vom Chat-Server auf der Syno per http Webseitenaufruf zugreifbar sein.
Zum Beispiel sendet dieser Aufruf:
text="Perl Buch" fileUrl="https://images-na.ssl-images-amazon.com/images/I/51ysOJaF3WL._SX301_BO1,204,203,200_.jpg"
das Cover eines Buches an den Empfänger.
Man müsste also dafür sorgen, dass die durch plotAsPng() enstandenene Datei per Link erreichbar ist.
Ich muß mal überlegen ob/wie das möglich wäre. Hatte mir bis jetzt dazu keine Gedanken gemacht.
Ideen sind jederzeit willkommen.
LG,
Heiko
Hallo Reihard,
ich kenne dieses plotAsPng() nicht und weiss auch nicht, wo es läuft. Man könnte aber entweder in das plotAsPng() - Script ein ssh Befehl zum kopieren der fertiggestellten Bilddatei anfügen, das dieses Bild auf die Diskstation kopiert. Wenn keine Historie der Bilder gewünscht wird, kann es immer den gleichen Namen haben und sich selbst überschreiben.
Gruß
Ralf
Hallo,
das hab ich mir auch überlegt. Hab da mal ein Code-Schnipsel von Betateilchen gefunden:
sub test {
open(my $out, '>:raw', './log/test.png') or die "Unable to open: $!";
print $out plotAsPng('SVG_dbLog_2');
close($out);
}
Das soll die erzeugte Grafik speichern. Muss das mal nachher in Ruhe ausprobieren, ob das klappt.
Vielen Dank schonmal für die Hinweise.
Reinhard
Ich denke auch mal ein bisschen drüber nach.
Aber Reinhard, das die in dem Code
open(my $out, '>:raw', './log/test.png') or die "Unable to open: $!";
unbedingt nicht verwenden. Damit schießt du die u.U. dein FHEM ab.
An der Stelle lieber eine Logausgabe und return.
Grüße,
Heiko
Hab jetzt mal eine Funktion in die 99myutils angefügt:
sub PNGFile
{
my $FileName = shift;
my $Plot = shift;
open FILE, "> /tmp/$FileName";
binmode FILE;
print FILE $Plot;
close FILE;
}
mit dem Aufruf
{PNGFile("Dateiname.png",plotAsPng("<Name des Plots>"))]
wird eine PNG-Datei ins tmp-Verzeichnis geschrieben.
Jetzt muss ich die nur noch irgendwie als URL aufrufbar machen...???
Das ist doch schon nicht schlecht
Schau dir mal das Modul https://fhem.de/commandref.html#HTTPSRV an. Damit kannst du eine FHEMWEB-Instanz auf ein bestimmtes Verzeichnis zeigen lassen und die darin befindlichen Dateien aufrufen.
Ich hab das mal zur Anzeige von Kameraaufnahmen hier beschrieben: https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station#Nutzung_des_FHEM-internen_HTTPSRV_Plug-In
Also im Prinzip funktioniert es schon mit dem Aufruf:
fileUrl = "<ip-fhem>:8083/fhem/www/images/<Dateiname>
klappt der Aufruf (die Datei muss natürlich dann nicht im tmp-Verzeichnis, sondern im images-Verzeichnis erzeugt werden)
Leider funktioniert das aber nicht so schön wie in Telegram, da sehe ich gleich im Chat eingebettet das Bild.
Hier muss ich erst noch den Link anklicken. Schade
Habe es gerade mal bei mir probiert.
Klappt einwandfrei und das Bild wird gleich dargestellt.
Der Aufruf war:
text="Bild" fileUrl="http://User:Passwort@<IP>:8083/fhem/www/images/Carport-20200522-1147234626.jpg"
Im Anhang siehst du ...
Yepp, danke jetzt klappts bei mir auch...der Fehler sitzt doch meist vor dem Computer ;)
ich habe text und fileUrl immer auf zwei Zeilen aufgeteilt. In einer Zeile funktioniert es so wie es soll.
Vielen Dank für Deine Hilfe und Deine Geduld.
Schönen Abend noch
Reinhard
Das klappt auch mit Verteilung über mehrere Zeilen.
Wichtig ist nur "fileUrl="http.." und nicht "fileUrl = "http..."
Dir auch schönen Abend !
Grüße,
Heiko
Aber deine Vorgehensweise werde ich mal im Wiki zu SSChatBot hinterlegen.
LG
Hallo Heiko,
habe die Sub nochmal etwas optimiert:
sub PNGFile
{
my $FileName = shift;
my $Plot = shift;
open FILE, "> /opt/fhem/www/images/$FileName";
binmode FILE;
print FILE plotAsPng($Plot);
close FILE;
return;
}
Aufruf der Sub erfolgt mit:
{PNGFile("<Name-des-PNG-Files>.png","<Name-des-SVG-Plots>")}
[/code]
So jetzt geht's dann ins Bett...gute Nacht
Reinhard
Hallo Reinhard,
ich habe noch eine Variante gefunden mit der man unter Verwendung des WEBSSChatBot-Devices das Plotfile hochladen kann.
Dieses Device wird ja bei der Definition des ChatBots mit angelegt und ist gleich mit einem CSRF-Token geschützt.
Dein Script habe ich noch geringfügig angepasst:
####################################################################################
# Ausgabe der SVG-Funktion "plotAsPng" in eine Datei schreiben
# Die Datei wird im Verzeichnis "/opt/fhem/www/images" erstellt
#
# Aufruf mit: {PlotToFile('<Filename>.png','<Name-SVG-Device>')}
#
####################################################################################
sub PlotToFile {
my $file = shift;
my $plot = shift;
my $dir = "/opt/fhem/www/images";
open FILE, "> $dir/$file" or do {
Log (1, ">PlotToFile< can't open $dir/$file for write access !");
return;
};
binmode FILE;
print FILE plotAsPng($plot);
close FILE;
return;
}
Das folgende Notify versendet des erstellte Plotfile wenn der Event ".... user sendPng <SVG-Device>" auftritt:
user:sendPng.*
{
my $server = "xxx.xxx.xxx.xxx:8086/sschat"; # <IP>:<Port> des WEBSSChatBot-Devices (Internal FW des SSChatBot)
my $file = "PlotToChat.png"; # Filename
my $path = "www/images"; # Pfad
my $csrf = "xxxxxxx"; # CSRF-Token des WEBSSChatBot-Devices (Internal CSRFTOKEN)
my $prot = "http";
PlotToFile($file, $EVTPART1);
CommandSet (undef, "SynChatBot asyncSendItem text=\"aktueller Plot $EVTPART1\" fileUrl=\"$prot://$server/$path/$file?%26fwcsrf=$csrf\" ");
}
}
Das Regex user:sendPng.* muss natürlich angepasst werden.
LG,
Heiko
Das Versenden eines Plotfiles ist jetzt im Wiki (https://wiki.fhem.de/wiki/SSChatBot_-_Integration_des_Synology_Chat_Servers#Versenden_von_SVG-Plots) beschrieben.
Wenn ich dazu komme, werde ich dem Modul einen integrierten Befehl spendieren mit dem das Versenden einfach und bequem durchgeührt werden kann.
Grüße,
Heiko
In meinem contrib liegt eine neue Version 1.7.0.
Mit dieser Version ist nun der Versand von Plots integriert möglich.
* eine SVG Plot-Datei [an user1 und user2] senden. Nach dem Keywort svg ist der Name des SVG Devices anzugeben dessen Plot als Image versendet werden soll (Perl Modul Image::LibRSVG muß installiert sein).
set <name> syncSendItem text="<Text>" svg="<SVG-Device>" [users="user1,user2"]
Die Empfänger [users=] sind optional falls der/die Empfänger im Attribut "defaultPeer" bereits angegeben wurden.
Ein im "asyncSendItem" angegebener Empfänger hat immer Vorrang vor einem eventuell gesetzem Attribut "defaultPeer".
Ist kein text="..." angegeben, wird per default der Name des SVG Devices eingesetzt und als Text versendet.
Wiki ist ergänzt.
Hallo Heiko,
super, klappt wirklich gut.
Kann ich eigentlich noch weitere Parameter für plotAsPng übergeben?
plotAsPng("<SVG-Device>","week")
liefert den Plot für eine Woche zum Beispiel.
Habs zwar schon probiert mit
svg="<SVG-Device>","week"
oder
svg=""<SVG-Device>","week""
oder
svg="'<SVG-Device>','week'"
Klappt leider alles nicht, Fehlermeldung ist immer, daß das Device nicht existiert.
Viele Grüße
Reinhard
Hallo Reinhard,
ZitatKann ich eigentlich noch weitere Parameter für plotAsPng übergeben?
Momentan nicht, hatte ich einfach nicht auf dem Schirm dass es noch weitere Aufrufoptionen für plotAsPng gibt.
Ist aber kein Problem das zu erweitern.
Wenn ich im Code richtig gesehen habe, wäre das maximal:
plotAsPng("<SVG-Device>","<zoom>","<off>")
Wobei ich momentan nicht einschätzen kann was der letzte mögliche Paramer "off" bedeuten könnte.
Vllt. weißt du das.
Ich erweitere das Modul zunächst mal um "zoom" und melde mich.
Grüße,
Heiko
Hallo Heiko,
mit dem off-Wert, kann man den Plot verschieben.
plotAsPng("<SVG-Device>","week",-1)
generiert dir den Plot der letzten Woche.
Ah, means "offset" ;)
Neue Version ist hochgeladen.
Damit geht nun:
set <name> syncSendItem text="<Text>" svg="<SVG-Device>[,<Zoom>][,<Offset>]" [users="user1,user2"]
Super, funktioniert jetzt für mich in vollem Umfang.
Vielen Dank nochmal für das tolle Modul und die schnelle Reaktion.
Ein schönes Pfingstwochenende
Reinhard
Hallo Reinhard,
gern geschehen.
Was mir noch durch den Kopf gegangen ist....
Wenn man einen Plot erstellt mit einem großen Zoom bzw. Offset, kann es m.M. nach passieren dass FHEM während der Bilderstellung blockiert weil die Daten erst aus der DB oder Filelog extrahiert werden müssen.
Wie sind da deine Erfahrungen ?
Wünsche dir auch schöne Pfingsten !
Grüße,
Heiko
Hallo Heiko,
dank deines Moduls will ich meinen Telegram Bot auf Synology umstellen. Allerdings scheitere ich direkt Befehle abzusetzen.
Das Beispiel aus dem Wiki funktioniert:
Zitat
set <Name> asyncSendItem
text="Hallo ich bin Dein ChatBot! Was kann ich für Dich tun?"
attachments="[{
"callback_id": "menue", "text": "Wähle ein Menü aus!",
"actions":[
{"type": "button", "name": "responseHM", "value": "hm", "text": "Hauptmenü", "style": "orange"},
{"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"},
{"type": "button", "name": "responseON", "value": "/set SW_TV on", "text": "TV An", "style": "green"},
{"type": "button", "name": "responseOFF", "value": "/set SW_TV off", "text": "TV Aus", "style": "green"}
]
}]"
Ändere ich aber nur den Devicename auf ein Device, dass es in meiner Installation gibt, z.B. HUEDevice12, dann wird der Befehl erst gar nicht geschickt. Ein "ListSendQueue" zeigt:
Zitat
1 => userid=>7, text=>Hallo ich bin Dein ChatBot! Was kann ich für Dich tun?, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>malformed JSON string received from Synology Chat Server, fileUrl=>, channel=>, attachment=>[{ "callback_id": "menue", "text": "Wähle ein Menü aus!", "actions":[ {"type": "button", "name": "responseHM", "value": "hm", "text": "Hauptmenü", "style": "orange"}, {"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"}, {"type": "button", "name": "responseON", "value": "/set SW_TV on", "text": "TV An", "style": "green"}, {"type": "button", "name": "responseOFF", "value": "/set HUEDevice12 off", "text": "TV Aus", "style": "green"} ] }]
Bei einem FS20 Device mit Namen FS20_a81a03 klappt es. Auch hueDevice12 funktioniert (gibt es bei mir aber nicht). Mache ich noch irgendwas falsch, oder liegt es wirklich am Devicenamen HUEDevice12 ? Und wenn ja, wieso?
Vielen Dank!
Hallo Thargor,
dann hast du nicht die aktuellste Modulversion.
Das Problem habe ich schon gefixt. Schau mal in den Post #24 ff.
LG,
Heiko
::)
Oh Mann ... und dabei sind das hier noch nichtmal 80 Seiten ....
Vielen Dank!
Hallo tolles Modul danke dafür.
Ich hatte bisher den teleBot in Verbindung mit msg in Betrieb.
Hat schon jemand versucht den SSChatBot mit msg zu betreiben?
Ich hab es leider bisher nicht hinbekommen und wäre für ein paar Tipps dankbar.
Grüße
Helmuth
Hallo Helmuth,
ich benutze msg zwar nicht, aber zeig uns doch mal bitte was du schon probiert hast.
LG,
Heiko
Hallo Heiko
Im globalMsg Modul gibt es ja zum einen das Attribut msgContactPush wo der teleBot sprich Telegram eingetragen ist.
Dort müsste jetzt der SSChatBot hin. Dann gibt es noch die routeCmd wo drin steht wie msg den SSChatBot ansteuern soll. Für Telegram, Pushover und Whatsapp u.s.w sind die Informationnen schon hinterlegt. Für den SSChatBot müsste man die über drei Attribute selber setzen und das ist mein Problem.
Vielleicht sollte man den Maintainer des msg Modul mit ins Boot holen und das Modul entsprechend erweitern. Es sind ja vielleicht mehrer Leute die das nutzen würden.
Grüße
Helmuth
Hallo Helmuth,
ich habe das jetzt mal schnell durchgelesen und ausprobiert.
Ich habe das globalMsg Device angelegt und dort:
attr globalMsg msgCmdPush set %DEVICE% asyncSendItem %MSG%
attr globalMsg msgContactPush SynChatBot
gesetzt, wobei SynChatBot mein Chatbot-Device ist.
Dann konnte ich schon mit
msg das ist ein einfacher Text
den Text versenden. Komplexere Strukturen habe ich jetzt nicht probiert, aber sollten auch so einfach abzusetzen sein.
Im msg Forum mache ich eine Meldung bzgl. Integration. Vlt. reagiert Loredo darauf.
Grüße,
Heiko
Hallo Heiko
danke für Deinen Test und die schnelle Antwort.
Das das so einfach umzustellen ist hätte ich nicht gedacht. Asche über mein Haupt.
Habe es getestet und funktioniert auf Anhieb. Somit kann ich mich wieder ein wenig
der öffentlichen Daten hin und her Schieberei entziehen.
Das ist es was fhem ausmacht, einfach neue Wege gehen.
Also vielen Dank nochmal für die Hilfe.
Grüße
Helmuth
Hallo,
ich versuche auf einer Synology DS918 unter fhem im Docker SSChatBot in Betrieb zu nehmen. Auf den Client erhalte ich beim Senden folgende Meldung:
Senden der Anfrage an den Bot-Server fehlgeschlagen. Bitte kontaktieren Sie den Bot-Besitzer.
Im der LOG-Datei in fhem finde ich folgenden Eintrag (verbose=5):
2020.07.12 09:28:35.232 4: Connection accepted from WEBSSChatBot_127.0.0.1_33448
2020.07.12 09:28:35.233 5: GET /sschat/healthcheck HTTP/1.1
Host: localhost:8082
User-Agent: FHEM-Docker/1.0 Health Check
Accept: */*
2020.07.12 09:28:35.233 4: WEBSSChatBot_127.0.0.1_33448 GET /sschat/healthcheck; BUFLEN:0
2020.07.12 09:28:35.241 4: WEBSSChatBot: /sschat/healthcheck / RL:6176 / text/html; charset=UTF-8 / / Cache-Control: no-cache, no-store, must-revalidate
Dieser Eintrag wird im Abstand von ca. 20 Sekunden ständig wiederholt. Leider verstehe ich die Meldung nicht und weiß nicht, wie ich die Meldung verhindern könnte, bzw. was ich machen könnte, um die Clients zu Laufen zu bringen.
Von fhem aus lassen sich Nachrichten versenden, aber es kommen keine der in den Clients gesendeten Nachrichten in fhem an. Die Clients erhalten die Nachricht.
Die Benutzerliste im fhem-Gerät SSChatBot wird angezeigt und der Status ist "aktive".
Auf einem Raspberry mit fhem funktioniert alles!
Kann mir bitte jemand mitteilen, ob SSChatBot im Docker auf der DS918 genutzt werden kann und was ich ggf. machen müsste.
Grüße,
Eberhard
Hallo Eberhard,
muß vorweg sagen, dass ich FHEM auf Docker nicht einsetze und nur bedingt helfen kann.
Grundsätzlich sollte SSChatBot auf Docker-FHEM auch funktionieren.
Die Meldung
Zitat
Senden der Anfrage an den Bot-Server fehlgeschlagen. Bitte kontaktieren Sie den Bot-Besitzer.
wird nicht vom Modul generiert, sondern muß von der Syno kommen.
Wenn ich dich richtig verstanden habe, klappt die Sendung von Mitteilungen von FHEM zum Synology Chat-Server, aber wenn du vom Browser/App aus eine Mitteilung über den Chatserver an den SSChatBot in FHEM senden willst, klappt das nicht und es kommt die obige Meldung, richtig ?
Du müsstest uns mal noch ein list von deinem SSChatBot und vom WEBSSChatBot posten. Weiterhin ist interessant wie du die Integration des Bots im Chatserver angegeben hast. Das Token bitte verfälschen !
Grüße,
Heiko
Hallo Heiko,
genau so ist es, von fhem zum Server geht es, von einem Client zu fhem nicht.
Hier das List von SSChatBot:
Internals:
DEF 192.168.178.92 5001 https
FUUID 5f0ab6c5-f33f-9611-cc9a-99fafaaa9266b58b
FVERSION 50_SSChatBot.pm:v1.8.0-s20534/2019-11-18
FW WEBSSChatBot
INADDR 192.168.178.92
INPORT 5001
INPROT https
MODEL ChatBot
NAME synoChatBot
NR 162
OPMODE chatUserlist
OUTDEF http://fhem.fritz.box:8082/sschat/outchat?botname=synoChatBot&fwcsrf=5f0ab6c5
RESEND next planned SendQueue start: immediately by next entry
STATE active
TOKEN Set
TYPE SSChatBot
HELPER:
APIINFO SYNO.API.Info
APIPARSET 1
CHATEXTERNAL SYNO.Chat.External
CHATEXTERNALMAXVER 2
CHATEXTERNALPATH entry.cgi
INFIX outchat
PACKAGE main
TOKEN XsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssiK
YX[Y\YSJdy>F
USERFETCHED 1
VERSION 1.8.0
USERS:
Buero:
email 123456@online.de
id 11
nickname
status offline
Eberhard:
email 432156@online.de
id 9
nickname
status offline
Mobiltelefon:
email 123456@online.de
id 6
nickname
status offline
admin:
email ztrewq@online.de
id 4
nickname
status online
fhem:
email trewqwe@online.de
id 16
nickname
status offline
pi:
email
id 5
nickname
status offline
READINGS:
2020-07-12 09:16:47 Error none
2020-07-12 09:08:16 Errorcode none
2020-07-12 09:18:56 QueueLenth 0
2020-07-12 09:09:51 sendPostId 261993005058
2020-07-12 09:09:51 sendUserId 9
2020-07-12 09:18:56 state active
Attributes:
defaultPeer pi,Buero,admin,Mobiltelefon,fhem,Eberhard
room Chat
verbose 5
Hier das List vom WEBSSChatBot:
Internals:
BYTES_READ 193879
BYTES_WRITTEN 12018601
CONNECTS 1715
CSRFTOKEN 5f0ab6c5
DEF 8082 global
FD 38
FUUID 5f0ab6c5-f33f-9611-f6a9-3dd2d5152c2ffff0
FVERSION 01_FHEMWEB.pm:0.222440/2020-06-23
NAME WEBSSChatBot
NR 163
NTFY_ORDER 50-WEBSSChatBot
PORT 8082
STATE Initialized
TYPE FHEMWEB
READINGS:
2020-07-12 09:15:16 state Initialized
Attributes:
closeConn 1
comment WEB Instance for SSChatBot devices.
It catches outgoing messages from Synology Chat server.
Don't edit this device manually (except such attributes like "room", "icon") !
csrfToken 5f0ab6c5
room Chat
stylesheetPrefix default
verbose 5
webname sschat
Die Einbindungseinstellungen enthalten die Ausgehende URL aus dem SSChatBot-Gerät, die Eingehende URL kann ja von mir nicht beeinflusst werden und enhält:
https://192.168.178.92:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=chatbot&version=2&token=%22Sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9BwA7MWDYdWaCCk%22
Bei den Einbindungseinstellungen des Bot habe ich die aktuellen Daten genommen, Token usw. wurde durch probieren verändert. Du kannst sicher sein, dass ich die richtigen Daten beim Token und der URL kopiert hatte.
Ansonsten gibt es nichts einzustellen. Wie gesagt, mit fhem auf dem Raspberry ist die Einrichtung kein Problem.
Gruß
Eberhard
Hallo Eberhard,
Vermutung ....
Im SSChatBot-Device wird der Wert von OUTDEF automatisch durch das Modul ermittelt. OUTDEF beschreibt unter anderem den Host/Port unter dem der SSChatBot erreichbar sein soll. In einem normalen Umfeld gehe ich davon aus, dass diese automatische Ermittlung gut funktioniert.
Dein FHEM/SSChatBot läuft aber jetzt auf dem Docker der Synology und müsste meiner Meinung nach die gleiche IP-Adresse wie die Syno haben, aber natürlich einem anderen Port. 8082 kann stimmen, muss aber nicht bei evtl. Portumleitung.
Also gehe ich momentan davon aus, dass dein OUTDEF:
http://fhem.fritz.box:8082/sschat/outchat?botname=synoChatBot&fwcsrf=5f0ab6c5
nicht stimmt und das Modul hier irrt.
Wie sprichst du dein Docker-FHEM vom Browser aus denn an, sicherlich nicht unter "http://fhem.fritz.box:8082", oder ?
Grüße,
Heiko
Heiko, das stimmt, ich benutze die IP-Adresse 192.168.178.92 der Diskstation mit dem Port 8085. In Docker wird der fhem-Port 8083 auf den Port 8085 umgeleitet. Warum das so ist, verstehe ich nicht, aber es ist notwendig und funktioniert.
Kann OUTDEF angepasst werden?
Gruß
Eberhard
ZitatKann OUTDEF angepasst werden?
Nein, das ist auch nicht nötig. Es ist eigentlich nur eine Hilfe für den User, der im normalen Umfeld den dort stehenden String einfach nur als "Ausgehende URL" bei der ChatBot-Einbindung reinkopieren muss.
Du müsstest also bei dir in der ChatBot Einbindung (in den Client-Einstellungen) anstatt dem String aus OUTDEF eine angepasste Adresse eintragen. D.h. in "Ausgehende URL".
Wenn ich mich jetzt nicht täusche müsste es so passen:
http://192.168.178.92:8085/sschat/outchat?botname=synoChatBot&fwcsrf=5f0ab6c5
Woher das Modul "fhem.fritz.box:8082" nimmt, erschließt sich mir momentan nicht.
EDIT: Es gibt allerdings auch einen Fall, in dem ich OUTDEF auswerte zur Versendung von SVG-Grafiken. In diesem Fall bin ich darauf angewiesen, dass OUTDEF mit den tatsächlichen Gegebenheiten übereinstimmt. Wenn also meine Vermutung richtig ist, braucht man wahrscheinlich doch eine manuelle Anpassungsmöglichkeit falls die automatische Adressermittlung in Docker nicht funktioniert.
Vielen Dank für die Hilfe,
ich habe in den Einbindungseinstellungen die ausgehende URL nach deinem Vorschlag angepasst und erhalte jetzt im Bot-Client keine Fehlermeldung mehr. In fhem kommt jedoch leider der über den Client gesendete Text nicht an. Keine Fehlermeldung in fhem und keine Reaktion in den Readings. Im Log der bereits gepostete Eintrag.
2020.07.12 20:57:11.556 4: Connection accepted from WEBSSChatBot_127.0.0.1_52510
2020.07.12 20:57:11.556 5: GET /sschat/healthcheck HTTP/1.1
Host: localhost:8082
User-Agent: FHEM-Docker/1.0 Health Check
Accept: */*
2020.07.12 20:57:11.556 4: WEBSSChatBot_127.0.0.1_52510 GET /sschat/healthcheck; BUFLEN:0
2020.07.12 20:57:11.565 4: WEBSSChatBot: /sschat/healthcheck / RL:6912 / text/html; charset=UTF-8 / / Cache-Control: no-cache, no-store, must-revalidate
Der Eintrag im Log entsteht aber auch, ohne dass eine Nachricht an fhem gesendet wird.
Solltest du die Ursache nicht kennen, dann lösche ich morgen die komplette Konfiguration und lege alles neu an. Wäre das sinnvoll??
Gruß Eberhard
Habe momentan auch keine weitere Idee. Diese Meldungen kenne ich so bei mir nicht. Sieht etwas anders aus, z.B.POST statt GET und auch "healthcheck" sagt mir nichts.
Neu konfigurieren ist in dem Fall keine schlechte Idee, geht ja auch schnell. Die Docker Spezifika sind wohl doch manchmal nicht so ganz trivial...
LG,
Heiko
Hallo Heiko,
auch die Neueinrichtung des Bot hat leider nicht geholfen. Ich warte mal noch ein paar Tage ab, vielleicht hat jemand eine Idee, was abhelfen könnte.
Danke für die Hilfe,
Eberhard
Hallo Eberhard,
hast du es schon mal so probiert ?
http://127.0.0.1:8082/sschat/outchat?botname=synoChatBot&fwcsrf=5f0ab6c5
Hallo Heiko,
auch die Kombination 127.0.0.1:8082 und 127.0.0.1:8085 und auch 127.0.0.1:8083 funktionieren nicht, mit dem Unterschied, dass in der erstgenannten und letztgenannten Version die bekannte Fehlermeldung im Synology-Client "Sender Anfrage...fehlgeschlagen" angezeigt wird, in der Version mit dem auf 8085 geänderten Port kommt keine Fehlermeldung im Clinet, aber auch keine Nachricht im SSChatBot-Gerät an.
Hat es eventuell mit dem zu tun, dass im Docker fhem mit dem Container-Port 8083 läuft aber SSChatBot auf 8082 ausgelegt ist? Laienhaft ausgedrückt!
Gruß Eberhard
Moin Eberhard,
ja, mir fällt es gerade wie Schuppen von den Augen.
Es ist nicht SSChatBot, aber das WEBSSChatBot Device läuft auf 8082.
Du brauchst also im Docker eine weitere Portumleitung von z.B. 9082 auf 8082.
Dann würdest du in der Integration angeben
http://192.168.178.92:9082/sschat/outchat?botname=synoChatBot&fwcsrf=5f0ab6c5
weil dasWeb Device unter diesem Port für den Syno Chatserver verfügbar wäre.
Prima Eberhard, manchmal hat man einfach einen Knoten im Hirn. :o
LG,
Heiko
Hallo Heiko,
vielen Dank, das war es. WEBSSChatBot ist quasi das Einfallstor für Nachrichten aus dem Client. Wieder was gelernt.
Nachmals DANKE für die Hilfe.
Viele Grüße
Eberhard
Hallo zusammen,
wie ihr eventuell in den Ankündigungen gelesen habt, habe ich mich entschieden nun auch das SSChatBot-Modul offiziell in das Repo einzuchecken.
Das ist nach entsprechenden Finalisierungen soeben passiert.
Das Modul wird ab morgen früh im Standard-Update mit ausgeliefert. Um die Kompatibilität zu gewährleisten, ist das SSCam-Modul ebenfalls mit angepasst (nur von Interesse für SSCam-User).
Restart ist auf jeden Fall nötig, aber das ist ja Standard bei einem Update.
Grüße,
Heiko
Hey Heiko,
vielen Dank erstmal für das tolle Modul. Wieder einen Schritt mehr weg von Telegramm :-D
Gibt es Bestrebungen SSChat auch im globalMsg-Modul als Attribut bei msgContactPush zu definieren?
Gruß Cobra
Hallo Cobra,
ob der msg Maintainer es auf dem Plan hat weiß ich nicht, aber lies mal den Beitrag #59 hier im Thread. Da haben wir deinen Fall erfolgreich eingebaut und beschrieben.
Probier mal. Freut mich dass dir das Modul gute Dienste leistet. :)
Grüße,
Heiko
Hey Heiko,
perfekt, so klappt es ohne Probleme.
Dann lassen wir das mal so bis der Maintainer es evtl. mit aufnimmt.
Danke dir
ZitatDann lassen wir das mal so bis der Maintainer es evtl. mit aufnimmt.
Kannst ihm ja eine Mitteilung schreiben, hatte ich auch schon getan. Gemeldet hat er sich bis jetzt leider noch nicht dazu.
LG
Hallo,
Habe dein Chat module jetzt auch mal getestet und habe ein Problem mit der /get Funktion.
Ich mache z.B. ein /get myDeconz lights, das funktioniert und liefert im Chat die Antwort:
2020.10.07 17:02:19 4: mySSChatBot - ####################################################
2020.10.07 17:02:19 4: mySSChatBot - ### start Chat operation Receive
2020.10.07 17:02:19 4: mySSChatBot - ####################################################
2020.10.07 17:02:19 5: mySSChatBot - raw data received (urlDecoded):
$VAR1 = 'botname="mySSChatBot" fwcsrf="5f703ed4" token="xxx" text="/get myDeconz lights" user_id="4" username="yyy"';
2020.10.07 17:02:19 4: mySSChatBot - received data decoded:
$VAR1 = {
'botname' => 'mySSChatBot',
'fwcsrf' => '5f703ed4',
'text' => '/get myDeconz lights',
'token' => 'xxx',
'user_id' => '4',
'username' => 'yyy'
};
2020.10.07 17:02:19 4: mySSChatBot - Synology Chat user "yyy" execute FHEM command: get myDeconz lights
2020.10.07 17:02:19 4: mySSChatBot - FHEM command return: ID NAME FHEM TYPE
2 Abstellraumlicht deconz.abstellraum.licht Color temperature light
3 Configuration tool 3 myDeconz_HUEDevice3 Configuration tool
4 Range extender 4 myDeconz_HUEDevice4 Range extender
5 Schlafzimmerlicht myDeconz_HUEDevice1 Extended color light
6 Rollo Tür myDeconz_HUEDevice6 Window covering device
7 Rollo Fenster myDeconz_HUEDevice7 Window covering device
2020.10.07 17:02:19 5: mySSChatBot - Add Item to queue - Index 31:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => "ID NAME FHEM TYPE \\n 2 Abstellraumlicht deconz.abstellraum.licht Color temperature light \\n 3 Configuration tool 3 myDeconz_HUEDevice3 Configuration tool \\n 4 Range extender 4 myDeconz_HUEDevice4 Range extender \\n 5 Schlafzimmerlicht myDeconz_HUEDevice1 Extended color light \\n 6 Rollo T\x{c3}\x{bc}r myDeconz_HUEDevice6 Window covering device \\n 7 Rollo Fenster myDeconz_HUEDevice7 Window covering device \\n",
'userid' => '4'
};
2020.10.07 17:02:20 4: mySSChatBot - ####################################################
2020.10.07 17:02:20 4: mySSChatBot - ### start Chat operation sendItem
2020.10.07 17:02:20 4: mySSChatBot - ####################################################
2020.10.07 17:02:20 4: mySSChatBot - API hashvalues already set - ignore get apisites
2020.10.07 17:02:20 4: mySSChatBot - botToken read from RAM: ********
2020.10.07 17:02:20 4: mySSChatBot - start SendQueue entry index "31" (sendItem) for operation.
2020.10.07 17:02:20 5: mySSChatBot - HTTP-Call will be done with httptimeout: 20 s
2020.10.07 17:02:20 4: mySSChatBot - Call-Out: http://192.168.178.9:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "ID NAME FHEM TYPE \n 2 Abstellraumlicht deconz.abstellraum.licht Color temperature light \n 3 Configuration tool 3 myDeconz_HUEDevice3 Configuration tool \n 4 Range extender 4 myDeconz_HUEDevice4 Range extender \n 5 Schlafzimmerlicht myDeconz_HUEDevice1 Extended color light \n 6 Rollo Tür myDeconz_HUEDevice6 Window covering device \n 7 Rollo Fenster myDeconz_HUEDevice7 Window covering device \n","user_ids": [4]}
2020.10.07 17:02:20 5: mySSChatBot - JSON returned: $VAR1 = {
'data' => {
'fail' => undef,
'succ' => {
'user_id_post_map' => {
'4' => '21474836506'
}
}
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
};
2020.10.07 17:02:20 4: mySSChatBot - Opmode "sendItem" finished successfully, Sendqueue index "31" deleted.
Mache ich ein /get myDeconz sensors, funktioniert das nicht und liefert im Chat keine Antwort:
2020.10.07 17:06:18 4: mySSChatBot - ####################################################
2020.10.07 17:06:18 4: mySSChatBot - ### start Chat operation Receive
2020.10.07 17:06:18 4: mySSChatBot - ####################################################
2020.10.07 17:06:18 5: mySSChatBot - raw data received (urlDecoded):
$VAR1 = 'botname="mySSChatBot" fwcsrf="5f703ed4" token="xxx" text="/get myDeconz sensors" user_id="4" username="yyy"';
2020.10.07 17:06:18 4: mySSChatBot - received data decoded:
$VAR1 = {
'botname' => 'mySSChatBot',
'fwcsrf' => '5f703ed4',
'text' => '/get myDeconz sensors',
'token' => 'xxx',
'user_id' => '4',
'username' => 'yyy'
};
2020.10.07 17:06:18 4: mySSChatBot - Synology Chat user "yyy" execute FHEM command: get myDeconz sensors
2020.10.07 17:06:18 4: mySSChatBot - FHEM command return: ID NAME FHEM TYPE
1: Daylight Daylight
2: Transmitter 2-gang deconz.FB.2gang ZHASwitch
3: TRÅDFRI remote control deconz.Ikea.FB.E1810 ZHASwitch
4: Bewegungsmelder deconz.pir ZHAPresence
5: Bewegungsmelder deconz.temp ZHATemperature
6: Bewegungsmelder deconz.light ZHALightLevel
9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch
10: BMEingang deconz.pir1 ZHAPresence
11: BMEingang deconz.temp1 ZHATemperature
12: BMEingang deconz.light1 ZHALightLevel
13: TRÅDFRI Motion sensor deconz.ikea.pir ZHAPresence
14: TRÅDFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence
15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch
16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery
17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery
2020.10.07 17:06:18 5: mySSChatBot - Add Item to queue - Index 32:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => "ID NAME FHEM TYPE \\n 1: Daylight Daylight \\n 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch \\n 3: TR\x{c3} DFRI remote control deconz.Ikea.FB.E1810 ZHASwitch \\n 4: Bewegungsmelder deconz.pir ZHAPresence \\n 5: Bewegungsmelder deconz.temp ZHATemperature \\n 6: Bewegungsmelder deconz.light ZHALightLevel \\n 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch \\n10: BMEingang deconz.pir1 ZHAPresence \\n11: BMEingang deconz.temp1 ZHATemperature \\n12: BMEingang deconz.light1 ZHALightLevel \\n13: TR\x{c3} DFRI Motion sensor deconz.ikea.pir ZHAPresence \\n14: TR\x{c3} DFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence \\n15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch \\n16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery \\n17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery \\n",
'userid' => '4'
};
2020.10.07 17:06:19 4: mySSChatBot - ####################################################
2020.10.07 17:06:19 4: mySSChatBot - ### start Chat operation sendItem
2020.10.07 17:06:19 4: mySSChatBot - ####################################################
2020.10.07 17:06:19 4: mySSChatBot - API hashvalues already set - ignore get apisites
2020.10.07 17:06:19 4: mySSChatBot - botToken read from RAM: ********
2020.10.07 17:06:19 4: mySSChatBot - start SendQueue entry index "32" (sendItem) for operation.
2020.10.07 17:06:19 5: mySSChatBot - HTTP-Call will be done with httptimeout: 20 s
2020.10.07 17:06:19 4: mySSChatBot - Call-Out: http://192.168.178.9:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "ID NAME FHEM TYPE \n 1: Daylight Daylight \n 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch \n 3: TR▒ DFRI remote control deconz.Ikea.FB.E1810 ZHASwitch \n 4: Bewegungsmelder deconz.pir ZHAPresence \n 5: Bewegungsmelder deconz.temp ZHATemperature \n 6: Bewegungsmelder deconz.light ZHALightLevel \n 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch \n10: BMEingang deconz.pir1 ZHAPresence \n11: BMEingang deconz.temp1 ZHATemperature \n12: BMEingang deconz.light1 ZHALightLevel \n13: TR▒ DFRI Motion sensor deconz.ikea.pir ZHAPresence \n14: TR▒ DFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence \n15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch \n16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery \n17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery \n","user_ids": [4]}
2020.10.07 17:06:19 5: mySSChatBot - JSON returned: $VAR1 = {
'data' => {
'fail' => {
'user_ids' => [
4
]
},
'succ' => undef
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
};
2020.10.07 17:06:19 4: mySSChatBot - Opmode "sendItem" finished successfully, Sendqueue index "32" deleted.
Wo ist da das Problem ist doch eigentlich der gleiche Befehl, nur die Daten sind andere.
Liegt es evtl. an den Daten? Sonderzeichen?
Gruß
Carlos
Hallo carlos,
ich denke solche Zeichen:
Zitat
...ight \\n 6 Rollo T\x{c3}\x{bc}r myDeconz_HU...
sind das Problem. Und weiter unten :
Switch \n 3: TR▒ DFRI remo
Das sieht mir nach Umlauten aus. Wobei man im Chatbot Textteil problemlos Umlaute mitgeben kann.
Könnte mit utf8 zusammenhängen. Woher kommen die Texte ?
Grüße,
Heiko
Habe mal einen Test gemacht. Im ChatBot Device ein own Command angelegt:
attr <> ownCommand5 /offen {return "die Tür ist offen"}
Dann im Chat Client im entsprechenden Kanal "/offen" an den Bot gesendet,prompt kam
die Tür ist offen
zurück.
Erstaunlich, jetzt habe ich den Gegentest gemacht mit:
attr <> ownCommand5 /offen {return "die T\x{c3}\x{bc}r ist offen"}
Funktioniert genauso. Hier die Antwort:
2020.10.07 17:48:43.407 4: SynChatBot - ####################################################
2020.10.07 17:48:43.408 4: SynChatBot - ### start Chat operation Receive
2020.10.07 17:48:43.409 4: SynChatBot - ####################################################
2020.10.07 17:48:43.409 5: SynChatBot - raw data received (urlDecoded):
'botname="SynChatBot" fwcsrf="5de1859f" token="....................." user_id="4" username="Heiko" post_id="34359740189" thread_id="0" timestamp="1602085723364" text="/offen"'
2020.10.07 17:48:43.410 4: SynChatBot - received data decoded:
{
'botname' => 'SynChatBot',
'user_id' => '4',
'username' => 'Heiko',
'thread_id' => '0',
'post_id' => '34359740189',
'text' => '/offen',
'fwcsrf' => '5de1859f',
'token' => '.......................',
'timestamp' => '2020-10-07 17:48:43'
}
2020.10.07 17:48:43.411 4: SynChatBot - Synology Chat user "Heiko" execute FHEM command: {return "die T\x{c3}\x{bc}r ist offen"}
2020.10.07 17:48:43.412 4: SynChatBot - FHEM command return: die Tür ist offen
2020.10.07 17:48:43.413 5: SynChatBot - Add Item to queue - Index 5:
{
'fileUrl' => '',
'text' => 'die Tür ist offen',
'userid' => '4',
'method' => 'chatbot',
'channel' => '',
'opmode' => 'sendItem',
'attachment' => '',
'retryCount' => 0
}
2020.10.07 17:48:43.542 4: WEBSSChatBot: /sschat/outchat?botname=SynChatBot&fwcsrf=5de1859f&token=.................&user_id=4&username=Heiko&post_id=34359740189&thread_id=0×tamp=1602085723364&text=%2Foffen / RL:7 / text/plain; charset=utf-8 / / Cache-Control: no-cache, no-store, must-revalidate
2020.10.07 17:48:44.411 4: SynChatBot - ####################################################
2020.10.07 17:48:44.412 4: SynChatBot - ### start Chat operation sendItem
2020.10.07 17:48:44.412 4: SynChatBot - ####################################################
2020.10.07 17:48:44.413 4: SynChatBot - API hashvalues already set - ignore get apisites
2020.10.07 17:48:44.414 4: SynChatBot - botToken read from RAM: ********
2020.10.07 17:48:44.414 4: SynChatBot - start SendQueue entry index "5" (sendItem) for operation.
2020.10.07 17:48:44.415 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2020.10.07 17:48:44.415 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "die Tür ist offen","user_ids": [4]}
2020.10.07 17:48:44.515 5: SynChatBot - JSON returned: {
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'data' => {
'succ' => {
'user_id_post_map' => {
'4' => '34359740190'
}
},
'fail' => undef
}
}
2020.10.07 17:48:44.538 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "5" deleted.
Habe es auch mit TRÅDFRI getestet, klappt auch:
2020.10.07 17:58:22.457 4: SynChatBot - ####################################################
2020.10.07 17:58:22.457 4: SynChatBot - ### start Chat operation sendItem
2020.10.07 17:58:22.458 4: SynChatBot - ####################################################
2020.10.07 17:58:22.459 4: SynChatBot - API hashvalues already set - ignore get apisites
2020.10.07 17:58:22.460 4: SynChatBot - botToken read from RAM: ********
2020.10.07 17:58:22.460 4: SynChatBot - start SendQueue entry index "6" (sendItem) for operation.
2020.10.07 17:58:22.461 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2020.10.07 17:58:22.462 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "die TRÅDFRI ist offen","user_ids": [4]}
2020.10.07 17:58:22.571 5: SynChatBot - JSON returned: {
'data' => {
'fail' => undef,
'succ' => {
'user_id_post_map' => {
'4' => '34359740192'
}
}
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
2020.10.07 17:58:22.595 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "6" deleted.
Hmmm...
Das geht bei mir auch alles.
Aber mach mal das:
attr mySSChatBot ownCommand1 /offen {return "ID NAME FHEM TYPE \\n 1: Daylight Daylight \\n 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch \\n 3: TR\x{c3} DFRI remote control deconz.Ikea.FB.E1810 ZHASwitch \\n 4: Bewegungsmelder deconz.pir ZHAPresence \\n 5: Bewegungsmelder deconz.temp ZHATemperature \\n 6: Bewegungsmelder deconz.light ZHALightLevel \\n 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch \\n10: BMEingang deconz.pir1 ZHAPresence \\n11: BMEingang deconz.temp1 ZHATemperature \\n12: BMEingang deconz.light1 ZHALightLevel \\n13: TR\x{c3} DFRI Motion sensor deconz.ikea.pir ZHAPresence \\n14: TR\x{c3} DFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence \\n15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch \\n16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery \\n17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery \\n"}
Und es passiert nix.
Gruß
Carlos
Hab jetzt mal alle Sonderzeichen raus, dann gehts.
Jedoch folgendes geht wieder nicht:
"ID NAME FHEM TYPE 1: Daylight Daylight 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch 3: TR\x{c3} DFRI remote control deconz.Ikea.FB.E1810 ZHASwitch 4: Bewegungsmelder deconz.pir ZHAPresence 5: Bewegungsmelder deconz.temp ZHATemperature 6: Bewegungsmelder deconz.light ZHALightLevel 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch 10: BMEingang deconz.pir1 ZHAPresence 11: BMEingang deconz.temp1 ZHATemperature 12: BMEingang deconz.light1 ZHALightLevel 13: DFRI Motion sensor deconz.ikea.pir ZHAPresence 14: TR\x{c3} DFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence 15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch 16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery 17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery "
Ist nur ein Sonderzeichen drin.
Ist vielleicht der Text dann insgesamt zu lang?
Nein, ich habe es jetzt hinbekommen mit den Sonderzeichen. Und zwar passt es so:
/offen {return "ID NAME FHEM TYPE \\n 1: Daylight Daylight \\n 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch \\n 3: TR\x{c3}\x{85}DFRI remote control deconz.Ikea.FB.E1810 ZHASwitch \\n 4: Bewegungsmelder deconz.pir ZHAPresence \\n 5: Bewegungsmelder deconz.temp ZHATemperature \\n 6: Bewegungsmelder deconz.light ZHALightLevel \\n 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch \\n10: BMEingang deconz.pir1 ZHAPresence \\n11: BMEingang deconz.temp1 ZHATemperature \\n12: BMEingang deconz.light1 ZHALightLevel \\n13: TR\x{c3}\x{85}DFRI Motion sensor deconz.ikea.pir ZHAPresence \\n14: TR\x{c3}\x{85}DFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence \\n15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch \\n16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery \\n17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery \\n"}
Wenn du mal schaust bei deinem Original ist das TRÅDFRI so kodiert:
TR\x{c3} DFRI
mit einem Leerzeichen nach \x{3}. Ich habe in die Unicode Tabelle geschaut und das Å würde man so kodieren:
\x{c3}\x{85}
Das habe ich im Attribut ergänzt und damit sieht es gut aus:
2020.10.07 18:23:31.874 4: SynChatBot - ####################################################
2020.10.07 18:23:31.875 4: SynChatBot - ### start Chat operation sendItem
2020.10.07 18:23:31.875 4: SynChatBot - ####################################################
2020.10.07 18:23:31.876 4: SynChatBot - API hashvalues already set - ignore get apisites
2020.10.07 18:23:31.877 4: SynChatBot - botToken read from RAM: ********
2020.10.07 18:23:31.877 4: SynChatBot - start SendQueue entry index "11" (sendItem) for operation.
2020.10.07 18:23:31.878 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2020.10.07 18:23:31.879 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "ID NAME FHEM TYPE \n 1: Daylight Daylight \n 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch \n 3: TRÅDFRI remote control deconz.Ikea.FB.E1810 ZHASwitch \n 4: Bewegungsmelder deconz.pir ZHAPresence \n 5: Bewegungsmelder deconz.temp ZHATemperature \n 6: Bewegungsmelder deconz.light ZHALightLevel \n 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch \n10: BMEingang deconz.pir1 ZHAPresence \n11: BMEingang deconz.temp1 ZHATemperature \n12: BMEingang deconz.light1 ZHALightLevel \n13: TRÅDFRI Motion sensor deconz.ikea.pir ZHAPresence \n14: TRÅDFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence \n15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch \n16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery \n17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery \n","user_ids": [4]}
2020.10.07 18:23:32.166 5: SynChatBot - JSON returned: {
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'data' => {
'fail' => undef,
'succ' => {
'user_id_post_map' => {
'4' => '34359740199'
}
}
}
}
2020.10.07 18:23:32.194 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "11" deleted.
Frage ist jetzt wie/wo kommen die Originaldaten her ?
Die kommen von der Phoscon api von deconz uber meinen conbe 2 stick.
Als HUEBridge angelegt.
Keine Ahnung wo man hier ansetzen kann.
Beim HUEBridge entwickler vielleicht.
Gruß
Carlos
Naja, ich dachte eher daran wie du die DAten sammelst, also du stellst dir die DAten zum Versenden irgendwie zusammen. Dort dachte ich müssste man mal schauen.
Nein mache ich nicht ich mache da ja auch nur einen GET auf mein device. Das kriege ich alles über die Hue Bridge von deconz
Ah, ok. Dann macht es sicherlich Sinn im HueBridge Forum mal nachzufragen.
Ich schaue mir auch dies und das nochmal an. Vielleicht kann ich auch im Modul noch etwas tun um solche Fälle zu behandeln.
Derartige Sonderzeichen sind imme runschön aber eben nicht auszuschließen.
Hallo carlos,
ich glaube ich konnte das Characterproblem mit Å zentral im Modul lösen.
Teste mal bitte die Version aus meinem contrib.
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben und danach FHEM restarten:
"wget -qO ./FHEM/50_SSChatBot.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/50_SSChatBot.pm"
Funktioniert leider immer noch nicht:
2020.10.07 22:56:24 4: mySSChatBot - ####################################################
2020.10.07 22:56:24 4: mySSChatBot - ### start Chat operation Receive
2020.10.07 22:56:24 4: mySSChatBot - ####################################################
2020.10.07 22:56:24 5: mySSChatBot - raw data received (urlDecoded):
$VAR1 = 'botname="mySSChatBot" fwcsrf="5f703ed4" token="xxx" text="/get myDeconz sensors" user_id="4" username="yyy"';
2020.10.07 22:56:24 4: mySSChatBot - received data decoded:
$VAR1 = {
'botname' => 'mySSChatBot',
'fwcsrf' => '5f703ed4',
'text' => '/get myDeconz sensors',
'token' => 'S5XlO9J599EDZJXOpscTnJpMRlsVnU2YfI09WRKouWQXYWnJAW4afxrVaGulHtgR',
'user_id' => '4',
'username' => 'yyy'
};
2020.10.07 22:56:24 4: mySSChatBot - Synology Chat user "yyy" execute FHEM command: get myDeconz sensors
2020.10.07 22:56:24 4: mySSChatBot - FHEM command return: ID NAME FHEM TYPE
1: Daylight Daylight
2: Transmitter 2-gang deconz.FB.2gang ZHASwitch
3: TRÅDFRI remote control deconz.Ikea.FB.E1810 ZHASwitch
4: Bewegungsmelder deconz.pir ZHAPresence
5: Bewegungsmelder deconz.temp ZHATemperature
6: Bewegungsmelder deconz.light ZHALightLevel
9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch
10: BMEingang deconz.pir1 ZHAPresence
11: BMEingang deconz.temp1 ZHATemperature
12: BMEingang deconz.light1 ZHALightLevel
13: TRÅDFRI Motion sensor deconz.ikea.pir ZHAPresence
14: TRÅDFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence
15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch
16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery
17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery
2020.10.07 22:56:24 5: mySSChatBot - Add Item to queue - Index 11:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => "ID NAME FHEM TYPE \\n 1: Daylight Daylight \\n 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch \\n 3: TR\x{c3} DFRI remote control deconz.Ikea.FB.E1810 ZHASwitch \\n 4: Bewegungsmelder deconz.pir ZHAPresence \\n 5: Bewegungsmelder deconz.temp ZHATemperature \\n 6: Bewegungsmelder deconz.light ZHALightLevel \\n 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch \\n10: BMEingang deconz.pir1 ZHAPresence \\n11: BMEingang deconz.temp1 ZHATemperature \\n12: BMEingang deconz.light1 ZHALightLevel \\n13: TR\x{c3} DFRI Motion sensor deconz.ikea.pir ZHAPresence \\n14: TR\x{c3} DFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence \\n15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch \\n16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery \\n17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery \\n",
'userid' => '4'
};
2020.10.07 22:56:25 4: mySSChatBot - ####################################################
2020.10.07 22:56:25 4: mySSChatBot - ### start Chat operation sendItem
2020.10.07 22:56:25 4: mySSChatBot - ####################################################
2020.10.07 22:56:25 4: mySSChatBot - API hashvalues already set - ignore get apisites
2020.10.07 22:56:25 4: mySSChatBot - botToken read from RAM: ********
2020.10.07 22:56:25 4: mySSChatBot - start SendQueue entry index "11" (sendItem) for operation.
2020.10.07 22:56:25 5: mySSChatBot - HTTP-Call will be done with httptimeout: 20 s
2020.10.07 22:56:25 4: mySSChatBot - Call-Out: http://192.168.178.9:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "ID NAME FHEM TYPE \n 1: Daylight Daylight \n 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch \n 3: TR▒ DFRI remote control deconz.Ikea.FB.E1810 ZHASwitch \n 4: Bewegungsmelder deconz.pir ZHAPresence \n 5: Bewegungsmelder deconz.temp ZHATemperature \n 6: Bewegungsmelder deconz.light ZHALightLevel \n 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch \n10: BMEingang deconz.pir1 ZHAPresence \n11: BMEingang deconz.temp1 ZHATemperature \n12: BMEingang deconz.light1 ZHALightLevel \n13: TR▒ DFRI Motion sensor deconz.ikea.pir ZHAPresence \n14: TR▒ DFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence \n15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch \n16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery \n17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery \n","user_ids": [4]}
2020.10.07 22:56:25 5: mySSChatBot - JSON returned: $VAR1 = {
'data' => {
'fail' => {
'user_ids' => [
4
]
},
'succ' => undef
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
};
2020.10.07 22:56:25 4: mySSChatBot - Opmode "sendItem" finished successfully, Sendqueue index "11" deleted.
2
Lösche ich das erste "3: TR\x{c3} DFRI" raus geht es mit dem Rest.
Ich versteh's nicht.
ZitatLösche ich das erste "3: TR\x{c3} DFRI" raus geht es mit dem Rest.
Ich versteh's nicht.
Das Leerzeichen muß keines sein, vllt. nur ein nicht druckbares Zeichen was man halt nicht sieht.
Ja das ist wirklich nicht so einfach.
Probier es nochmal bitte.
Wenn du das mit einem einfachen Send Kommando ausführst:
set <> asyncSendItem text="ID NAME FHEM TYPE \n 1: Daylight Daylight \n 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch \n 3: TR\x{c3}\x{85}DFRI remote control deconz.Ikea.FB.E1810 ZHASwitch \n 4: Bewegungsmelder deconz.pir ZHAPresence \n 5: Bewegungsmelder deconz.temp ZHATemperature \n 6: Bewegungsmelder deconz.light ZHALightLevel \n 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch \n10: BMEingang deconz.pir1 ZHAPresence \n11: BMEingang deconz.temp1 ZHATemperature \n12: BMEingang deconz.light1 ZHALightLevel \n13: TR\x{c3}\x{85}DFRI Motion sensor deconz.ikea.pir ZHAPresence \n14: TR\x{c3}\x{85}DFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence \n15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch \n16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery \n17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery \n"
kommt alles an wie es soll:
2020.10.08 00:05:47.778 4: SynChatBot - ####################################################
2020.10.08 00:05:47.778 4: SynChatBot - ### start Chat operation sendItem
2020.10.08 00:05:47.779 4: SynChatBot - ####################################################
2020.10.08 00:05:47.779 4: SynChatBot - API hashvalues already set - ignore get apisites
2020.10.08 00:05:47.780 4: SynChatBot - botToken read from RAM: ********
2020.10.08 00:05:47.780 4: SynChatBot - start SendQueue entry index "87" (sendItem) for operation.
2020.10.08 00:05:47.781 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2020.10.08 00:05:47.781 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "ID NAME FHEM TYPE \n 1: Daylight Daylight \n 2: Transmitter 2-gang deconz.FB.2gang ZHASwitch \n 3: TR%C3%85DFRI remote control deconz.Ikea.FB.E1810 ZHASwitch \n 4: Bewegungsmelder deconz.pir ZHAPresence \n 5: Bewegungsmelder deconz.temp ZHATemperature \n 6: Bewegungsmelder deconz.light ZHALightLevel \n 9: TRADFRI on/off switch deconz.Ikea.FB.E1743 ZHASwitch \n10: BMEingang deconz.pir1 ZHAPresence \n11: BMEingang deconz.temp1 ZHATemperature \n12: BMEingang deconz.light1 ZHALightLevel \n13: TR%C3%85DFRI Motion sensor deconz.ikea.pir ZHAPresence \n14: TR%C3%85DFRI Motion sensor (2) deconz.ikea.pir2 ZHAPresence \n15: Rollo Schalter SZ deconz.rollo.remote ZHASwitch \n16: FYRTUR block-out roller blind deconz.rollo1.bat ZHABattery \n17: FYRTUR block-out roller blind deconz.rollo2.bat ZHABattery \n","user_ids": [4]}
2020.10.08 00:05:47.915 5: SynChatBot - JSON returned: {
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'data' => {
'succ' => {
'user_id_post_map' => {
'4' => '34359740251'
}
},
'fail' => undef
}
}
2020.10.08 00:05:47.943 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "87" deleted.
Nein, funktioniert leider immer noch nicht.
Das Ganze ist aber nicht richtig Ziel führen.
Das sollte auch nicht unbedingt in deinem Modul als workaround eingebaut werden.
Etwas ist mir da auch noch unklar. Du machst doch hier sicher einen synology api call, oder?
Warum hat der eigentlich da Probleme mit den Sonderzeichen?
Sollte doch einfach nur das Ergebnis im chat anzeigen.
Evtl. ist da dann doch ein Bug im API call.
Für mich war das eigentlich auch nur Test für dein Modul.
Ich habe jetzt einfach mal aus Å ein A gemacht, dann funktioniert das ja auch.
Also einfach in der Phoscon app die Sensoren ohne Sonderzeichen benennen.
Gruß
Carlos
Zitat
Etwas ist mir da auch noch unklar. Du machst doch hier sicher einen synology api call, oder?
Ja, das stimmt schon. Aber der Call muß einen vorgegebenen Aufbau einhalten und vor allem müssen die übermittelten Zeichen urlEncoded sein. Und speziell das Zeichen Å hat den Code \x{c3}\x{85} und wird dann zu %C3%85. Dieser Code wird vom Chat auch sauber als Å wiedergegeben.
Wenn das Encoding aber nicht sauber gemacht werden kann, aus welchen Gründen auch immer ... dann kann es Probleme geben.
Auf jeden Fall wird ein Å jetzt auch so dargestellt. :)
Aber ganz allgemein können Sonderzeichen irgendwo immer Probleme verursachen weil sie meist nicht so einfach zu handhaben sind wie einfache Zeichen.
Ich habe die Verarbeitung von Sonderzeichen noch komplettiert. Es werden nun auch solche Codes wie z.B. für Á, Â, Ã oder æ, ë, µ übertragen. Das Update ist seit heute früh in der Verteilung.
Grüße,
Heiko
Hallo, wie hier https://forum.fhem.de/index.php/topic,115371.msg1097112.html#msg1097112 (https://forum.fhem.de/index.php/topic,115371.msg1097112.html#msg1097112)schon angedroht ;) habe ich mir den SSChatBot gemäß Wiki installiert. Ich kann dem Bot und der Bot mir Nachrichten schicken. Außerdem kann ich über einen Slash Befehl
/get YiCam1 image
meine Webcam veranlassen Bilder zu machen. Nicht schlecht für den Anfang. Ich wollte dann einen Schritt weitergehen und die Bilder mithilfe des Befehls
/set SynFile Upload "/opt/fhem/www/snapshots" dest=/ShareFHEM/Cam2/%Y_%m_%d_%H_%M_ struc=false
auf mein Synology Nas speichern. Das funktioniert nicht. Wie ich jetzt weiß, weil in dem Code Leerzeichen sind. Es gibt auch keine Möglichkeit die zu maskieren o.ähnliches? Bei dieser Aktion ist mir aber noch etwas aufgefallen: Gemäß Wiki trage ich bei /get und /set Slash Befehlen
ZitatAnfrage-URL : hier wird wieder der Inhalt des Internals OUTDEF hineinkopiert
das Internal OUTDEF, welches auch den CSTFToken enthält, ein. Kann es sein das sich dieses Token bei einem Neustart von FHEM ändert und ich die Anfrage-URL ändern muß ?
Gruß
Thomas
PS: Morgen werde ich mal schauen, ob ich mit der Bewegungserkennung der Kamera notifys bzw. DOIFs triggern kann, welche Bilder machen, diese über SSFile auf meiner Diskstation sichern und mich über den Chatbot benachrichtigen.
Hi,
Zitat
Ich wollte dann einen Schritt weitergehen und die Bilder mithilfe des Befehls
Code: [Auswählen]
/set SynFile Upload "/opt/fhem/www/snapshots" dest=/ShareFHEM/Cam2/%Y_%m_%d_%H_%M_ struc=false
auf mein Synology Nas speichern. Das funktioniert nicht.
Habe es getestet, so funktioniert es:
/set SynFile Upload /opt/fhem/www/snapshots/*.* dest=/ShareFHEM/Cam2/%Y_%m_%d_%H_%M struc=false
sofern "/opt/fhem/www/snapshots" ein Verzeichnis ist.
Zitat
Kann es sein das sich dieses Token bei einem Neustart von FHEM ändert und ich die Anfrage-URL ändern muß ?
Nein, in dem automatisch angelegten FHEMWEB Device für den Chat (WEBSSChatBot) ist das Token mit dem Attribut csrfToken fest eingestellt.
Grüße,
Heiko
Moin,
bezüglich CSRF Token, denke ich mittlerweile das es sich um meinen Fehler bei der Erstellung eines 2 Bots handelte, der natürlich eine neue Webinstanz und somit auch einen neuenToken bekommt. Wenn man dann noch ohne nachdenken Copyy und Paste macht kann das schiefgehen.
ZitatHabe es getestet, so funktioniert es:
Code: [Auswählen]
/set SynFile Upload /opt/fhem/www/snapshots/*.* dest=/ShareFHEM/Cam2/%Y_%m_%d_%H_%M struc=false
sofern "/opt/fhem/www/snapshots" ein Verzeichnis ist.
Danke für das Codebeispiel. Funktioniert. Es funktioniert aber auch folgendes (gerade getestet)
/set SynFile Upload /opt/fhem/www/snapshots dest=/ShareFHEM/Cam5/%Y_%m_%d_%H_%M struc=false
Botantwort:
Zitatcommand 'set SynFile Upload /opt/fhem/www/snapshots dest=/ShareFHEM/Cam5/%Y_%m_%d_%H_%M struc=false' executed
Erwartungsgemäß entsteht enie Ordnerstruktur: /ShareFHEM/Cam/Datum-Uhrzeit/ mit allen Dateien aus dem Ursprungsverzeichnis Mein Fehler war das ich Anführungszeichen benutzt habe, denke ich wenigstens. Das ganze ist schon ziemlich cool und wird vielleicht ein Schritt weg vom Telegrambot, mal sehen.
auf jeden Fall Danke für deine Unterstüzung
Gruß Thomas
PS Ich werde mal weitere Schritte probieren :)
Hallo Thomas,
Die anführungszeichen hatte ich bei ssfile als pflicht angegeben damit auch dateien mit leerzeichen im namen verarbeitet werden. Ist beim chatbot kontraproduktiv. Da werde ich mir noch was einfallen lassen müssen. ;)
Ich habe es jetzt realisiert, dass man einen Text-Tag an SSChatBot senden kann der selbst quotation Marks (") enthält.
Damit geht nun auch eine solche Upload-Anforderung an SSFile:
/set SynFile Upload "./log/cookies - Haus & Hof mit ä.txt,./log/cookies - Haus & Hof.txt" dest=/home/upload mode=full
Version ist eingecheckt und morgen früh im Update.
Hallo,
ich bräuchte mal eine kleine Unterstützung.
Bisher habe ich sämtliche Informationen mittels Telegramm ausgegeben.
So langsam baue ich Stück für Stück alles auf SSChat um.
Nun komme ich hier aber leider nicht weiter.
Nach einem Neustart lasse ich mich wie folgt informieren:
defmod notify.msg.fhem_reload notify global:INITIALIZED { fhem "set FHEMstatus msg FHEM Server wurde soeben neu gestartet."}
Stelle ich dies nun um:
defmod notify.msg.fhem_reload notify global:INITIALIZED { fhem "set SynChatBot asyncSendItem FHEM Server wurde soeben neu gestartet."}
kommt keine Nachricht an.
Im log steht:
2020.11.23 11:03:23 3: set SynChatBot asyncSendItem FHEM Server wurde soeben neu gestartet. : The registered Synology Chat users are unknown. Please retrieve them first with "get SynChatBot chatUserlist".
2020.11.23 11:03:23 3: notify.msg.fhem_reload return value: The registered Synology Chat users are unknown. Please retrieve them first with "get SynChatBot chatUserlist".
...
2020.11.23 11:03:26 3: SynChatBot - SSChatBot "SynChatBot" for URL /outchat registered
Lt. Wiki "Der Sendeprozess wird sofort gestartet. War die Übermittlung erfolgreich, wird die Nachricht aus der Queue gelöscht. Anderenfalls verbleibt sie in der Queue und der Sendeprozess wird, in einem von der Anzahl der Fehlversuche abhängigen Zeitintervall, erneut gestartet."
ein
set listSendqueue
zeigt aber
SendQueue is empty.
Was könnte ich tun?
Hallo,
ich gehe davon aus, dass es funktioniert wenn du manuell ein
set SynChatBot asyncSendItem FHEM Server wurde soeben neu gestartet
lostritts, oder ?
ja, das funktioniert.
Hab ich mir gedacht. Nach dem Neustart wurden durch das Modul die auf der Synology verfügbaren Chat-User bzw. deren ID's noch nicht abgerufen.
Das passiert zwar gleich beim Start von FHEM, aber dauert einige Zeit, sodass dein notify vorher bereits ausgeführt wird und dadurch diese Daten noch nicht vorhanden sind.
Ich schaue mal dass ich ein Reading zur Verfügung stelle auf das man triggern kann sobald die User beim Start bezogen wurden.
Du kannst darauf warten und testen oder du verzögerst als Workaround den Versand der Nachricht bei Start um eine Zeit X bis ich das Reading eingebaut habe.
Grüße,
Heiko
So, ich habe einen Event (kein Reading) eingebaut auf den man beim Start triggern kann. Damit ist sichergestellt, dass das Device ready to use ist:
2020-11-23 13:44:40.024 SSChatBot SynChatBot Errorcode: none
2020-11-23 13:44:40.024 SSChatBot SynChatBot Error: none
2020-11-23 13:44:40.635 SSChatBot SynChatBot CHAT_INITIALIZED
2020-11-23 13:44:40.647 SSChatBot SynChatBot QueueLength: 0
2020-11-23 13:44:40.661 SSChatBot SynChatBot active
Der Event kommt nur beim Start.
Die Version liegt in meinem Contrib zum Test.
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben und danach FHEM restarten:
"wget -qO ./FHEM/50_SSChatBot.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/50_SSChatBot.pm"
Probier mal.
Grüße,
Heiko
Hoffentlich hab ich alles korrekt gemacht. Bin nicht so bewandert.
Was hab ich gemacht:
1) "wget -qO ./FHEM/50_SSChatBot.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/50_SSChatBot.pm"
2) restart FHEM
3) defmod notify.sschat.fhem_reload notify SynChatBot:CHAT_INITIALIZED { fhem "set SynChatBot asyncSendItem FHEM Server wurde soeben neu gestartet."}
4) save
5) restart FHEM
6) log
2020.11.23 14:02:58 3: SynChatBot - SSChatBot "SynChatBot" for URL /outchat registered
...
2020.11.23 14:03:07 3: set SynChatBot asyncSendItem FHEM Server wurde soeben neu gestartet. : The registered Synology Chat users are unknown. Please retrieve them first with "get SynChatBot chatUserlist".
2020.11.23 14:03:07 3: notify.sschat.fhem_reload return value: The registered Synology Chat users are unknown. Please retrieve them first with "get SynChatBot chatUserlist".
Irgendwo war anscheinend ein Fehler.
Hast du alles richtig gemacht. Hmm, da muss ich nochmal ran.
Das hier:
2020.11.23 14:03:07 3: set SynChatBot asyncSendItem FHEM Server wurde soeben neu gestartet. : The registered Synology Chat users are unknown. Please retrieve them first with "get SynChatBot chatUserlist".
2020.11.23 14:03:07 3: notify.sschat.fhem_reload return value: The registered Synology Chat users are unknown. Please retrieve them first with "get SynChatBot chatUserlist".
kommt von dem notify. Das kannst du mal auf verbose 2 setzen. Dann stört es nicht.
Setze den SynChatBot auf verbose 5, speichere und mache nochmal einen Neustart.
Dann kommt im Log eine Menge vom SynChatBot, Poste mir das bitte dann.
Auszug vom log
2020.11.23 14:19:31 0: Server shutdown
...
2020.11.23 14:20:48 5: SynChatBot - Add Item to queue - Index 1:
$VAR1 = {
'attachment' => '',
'fileUrl' => '',
'userid' => '',
'channel' => '',
'opmode' => 'chatUserlist',
'retryCount' => 0,
'text' => '',
'method' => 'user_list'
};
2020.11.23 14:20:48 4: SynChatBot - ####################################################
2020.11.23 14:20:48 4: SynChatBot - ### start Chat operation chatUserlist
2020.11.23 14:20:48 4: SynChatBot - ####################################################
2020.11.23 14:20:48 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2020.11.23 14:20:48 4: SynChatBot - API imported:
$VAR1 = {
'INFO' => {
'NAME' => 'SYNO.API.Info',
'VER' => 1,
'PATH' => 'query.cgi'
},
'EXTERNAL' => {
'NAME' => 'SYNO.Chat.External'
}
};
2020.11.23 14:20:48 4: SynChatBot - Call-Out: http://192.168.123.62:5000/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.API.Info,SYNO.Chat.External
2020.11.23 14:20:49 3: SynChatBot - SSChatBot "SynChatBot" for URL /outchat registered
...
2020.11.23 14:20:57 5: SynChatBot - JSON returned: $VAR1 = {
'success' => bless( do{\(my $o = 1)}, 'JSON::XS::Boolean' ),
'data' => {
'SYNO.API.Info' => {
'maxVersion' => 1,
'path' => 'query.cgi',
'minVersion' => 1
},
'SYNO.Chat.External' => {
'requestFormat' => 'JSON',
'maxVersion' => 2,
'path' => 'entry.cgi',
'minVersion' => 1
}
}
};
2020.11.23 14:20:57 4: SynChatBot - API completed:
$VAR1 = {
'INFO' => {
'NAME' => 'SYNO.API.Info',
'MOD' => 'no',
'VER' => 1,
'PATH' => 'query.cgi'
},
'EXTERNAL' => {
'NAME' => 'SYNO.Chat.External',
'MOD' => 'no',
'VER' => 2,
'PATH' => 'entry.cgi'
},
'PARSET' => 1
};
2020.11.23 14:20:57 4: SynChatBot - botToken read from RAM: ********
2020.11.23 14:20:57 4: SynChatBot - start SendQueue entry index "1" (chatUserlist) for operation.
2020.11.23 14:20:57 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2020.11.23 14:20:57 4: SynChatBot - Call-Out: http://192.168.123.62:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=user_list&token="<secret>"
...
2020.11.23 14:20:58 5: SynChatBot - JSON returned: $VAR1 = {
'success' => bless( do{\(my $o = 1)}, 'JSON::XS::Boolean' ),
'data' => {
'users' => [
{
'avatar_version' => 0,
'nickname' => '',
'status' => 'offline',
'user_props' => {
'email' => '',
'avatar_color' => '#94bf13',
'timezone' => '',
'key_pair' => {
'public_key' => ''
},
'timezoneUTC' => 'Europe/Amsterdam',
'description' => 'Plex User'
},
'dsm_uid' => 1027,
'deleted' => bless( do{\(my $o = 0)}, 'JSON::XS::Boolean' ),
'username' => 'plex',
'is_disabled' => $VAR1->{'data'}{'users'}[0]{'deleted'},
'human_type' => 'dsm',
'user_id' => 4,
'type' => 'human'
},
{
'avatar_version' => 0,
'nickname' => '',
'status' => 'offline',
'user_props' => {
'email' => '',
'avatar_color' => '#24bff2',
'timezone' => '',
'key_pair' => {
'public_key' => ''
},
'timezoneUTC' => 'Europe/Amsterdam',
'description' => 'Kalenderzugriff'
},
'dsm_uid' => 1029,
'deleted' => $VAR1->{'data'}{'users'}[0]{'deleted'},
'username' => 'Kalender',
'is_disabled' => $VAR1->{'data'}{'users'}[0]{'deleted'},
'human_type' => 'dsm',
'user_id' => 5,
'type' => 'human'
},
{
'avatar_version' => 1601997991,
'nickname' => "J\x{f6}rg",
'status' => 'offline',
'user_props' => {
'email' => '',
'avatar_color' => '#94bf13',
'timezone' => '',
'key_pair' => {
'public_key' => ''
},
'timezoneUTC' => 'Europe/Amsterdam',
'description' => 'System default user'
},
'dsm_uid' => 1024,
'deleted' => $VAR1->{'data'}{'users'}[0]{'deleted'},
'username' => 'admin',
'is_disabled' => $VAR1->{'data'}{'users'}[0]{'deleted'},
'human_type' => 'dsm',
'user_id' => 6,
'type' => 'human'
},
{
'avatar_version' => 0,
'nickname' => '',
'status' => 'offline',
'user_props' => {
'email' => '',
'avatar_color' => '#1dbfbf',
'timezone' => '',
'key_pair' => {
'public_key' => ''
},
'timezoneUTC' => 'Europe/Amsterdam',
'description' => ''
},
'dsm_uid' => 1035,
'deleted' => $VAR1->{'data'}{'users'}[0]{'deleted'},
'username' => 'Joerg_chat',
'is_disabled' => $VAR1->{'data'}{'users'}[0]{'deleted'},
'human_type' => 'dsm',
'user_id' => 9,
'type' => 'human'
}
]
}
};
2020.11.23 14:20:58 3: set SynChatBot asyncSendItem FHEM Server wurde soeben neu gestartet. : The registered Synology Chat users are unknown. Please retrieve them first with "get SynChatBot chatUserlist".
2020.11.23 14:20:58 3: notify.sschat.fhem_reload return value: The registered Synology Chat users are unknown. Please retrieve them first with "get SynChatBot chatUserlist".
2020.11.23 14:20:58 4: SynChatBot - Opmode "chatUserlist" finished successfully, Sendqueue index "1" deleted.
Danke, da hatte ich noch einen Denkfehler. Hole dir nochmal die neue Version aus dem contrib.
Jetzt sollte es klappen.
Dein notify kannst du aber besser so schreiben:
defmod notify.sschat.fhem_reload notify SynChatBot:CHAT_INITIALIZED set SynChatBot asyncSendItem FHEM Server wurde soeben neu gestartet.
Das Konstrukt { fhem "..."} ist hier überflüssig.
Zitat von: DS_Starter am 23 November 2020, 14:43:51
Das Konstrukt { fhem "..."} ist hier überflüssig.
Danke. Habs geändert.
Jetzt hat alles wunderbar funktioniert. :)
Muss ich jetzt bzgl. Updates etwas beachten?
Sehr schön. :)
Ich werde die neue Version heute noch einchecken, dann ist sie morgen früh mit im Regelupdate enthalten.
D.h. wenn du morge früh ab 8:00 dein FHEM updatest, bekommst du diese Version "offiziell".
Musst also nichts weiter beachten in dem Fall.
Klasse. Tolle Unterstützung.
Mein nächster Schritt wird die Ablösung der Kamerabilder von Telegramm zu SSChat wenns an der Haustür klingelt.
Da muss ich mich aber erst einmal einlesen. Ggf. komme ich wieder auf Dich zu.
Hallo,
jetzt habe ich m.W. alles nach dem WIKI, mit super Unterstützung!!!, eingerichtet.
Leider kunktioniert der Versand eines Bildes meiner Kamera mittels SynChatBot noch nicht.
ein
set SSam.Home snap
führt zu (log)
2020.11.27 16:41:18 3: SSCam.Home - Snapshot of Camera Home created. ID: 5330
2020.11.27 16:41:19 3: SSCam.Home - Telegram message [0] of transaction "1221" sent to "JXXX_RXXX" by "FHEMstatus"
2020.11.27 16:41:19 3: SSCam.Home - Chat message [0] of transaction "1221" for "admin" added to "SynChatBot" sendqueue
2020.11.27 16:41:19 2: SynChatBot - ERROR - Operation sendItem was not successful. Errorcode: 117 - illegal file name or path
2020.11.27 16:41:19 2: SynChatBot - ERROR - "sendItem" SendQueue index "5" not executed. It seems to be a permanent error. Exclude it from new send attempt !
list Kamera
Internals:
CAMID 1
CAMNAME Home
COMPATIBILITY 8.2.8
CREDENTIALS Set
DEF Home 192.168.123.62 5000
FUUID 5ce44486-f33f-95bd-b78c-db65a251dbf6b4d4
FVERSION 49_SSCam.pm:v9.8.2-s22912/2020-10-04
MODEL User Define -
NAME SSCam.Home
NR 409
OPMODE getStmUrlPath
PROTOCOL http
SERVERADDR 192.168.123.62
SERVERPORT 5000
STATE off
TYPE SSCam
HELPER:
ACTIVE off
CREDENTIALS \[WzdY5?dKlpipXwlnrA
HLSSTREAM inactive
LOGINRETRIES 0
OLDPTZHOME
OLDVALPOLL 210
OLDVALPOLLNOLOGGING 1
PACKAGE FHEM::SSCam
RECTIME_DEF 15
SID RcqxlY5HnuYYX0P4HSBTsO4dnUVOQaAPxRm4YOPdyKcFUqb8JzBp6mOeEJ3LlVabm9Mw7G720GvPSUEBTYjpIM
SNAPLAG 2
SNAPLIMIT 3
SNAPNUMCOUNT 1
STMKEYMJPEGHTTP http://192.168.123.62:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=1&StmKey="d35283a43a67bfdd669ba1e6a1b2cbc9"
STMKEYMXPEGHTTP http://192.168.123.62:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mxpeg&cameraId=1&StmKey="d35283a43a67bfdd669ba1e6a1b2cbc9"
STMKEYUNICST rtsp://syno:d35283a43a67bfdd669ba1e6a1b2cbc9@192.168.123.62:554/Sms=1.unicast
STMKEYUNICSTOVERHTTP rtsp://192.168.123.62:5000/webman/3rdparty/SurveillanceStation/cgi/rtsp.cgi?Sms=1.unicast&DsId=0&StmKey=d35283a43a67bfdd669ba1e6a1b2cbc9
TOTALCNT 4007
VERSION 9.8.2
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.20.6
API:
PARSET 1
AUDIOSTM:
MOD no
NAME SYNO.SurveillanceStation.AudioStream
PATH SurveillanceStation/audioStreaming.cgi
VER 2
AUTH:
MOD no
NAME SYNO.API.Auth
PATH auth.cgi
VER 6
CAM:
MOD no
NAME SYNO.SurveillanceStation.Camera
PATH entry.cgi
VER 9
CAMEVENT:
MOD no
NAME SYNO.SurveillanceStation.Camera.Event
PATH entry.cgi
VER 1
EVENT:
MOD no
NAME SYNO.SurveillanceStation.Event
PATH entry.cgi
VER 5
EXTEVT:
MOD no
NAME SYNO.SurveillanceStation.ExternalEvent
PATH entry.cgi
VER 1
EXTREC:
MOD no
NAME SYNO.SurveillanceStation.ExternalRecording
PATH entry.cgi
VER 3
HMODE:
MOD no
NAME SYNO.SurveillanceStation.HomeMode
PATH entry.cgi
VER 1
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
LOG:
MOD no
NAME SYNO.SurveillanceStation.Log
PATH entry.cgi
VER 3
PRESET:
MOD no
NAME SYNO.SurveillanceStation.PTZ.Preset
PATH entry.cgi
VER 1
PTZ:
MOD no
NAME SYNO.SurveillanceStation.PTZ
PATH entry.cgi
VER 6
REC:
MOD no
NAME SYNO.SurveillanceStation.Recording
PATH entry.cgi
VER 6
SNAPSHOT:
MOD no
NAME SYNO.SurveillanceStation.SnapShot
PATH entry.cgi
VER 1
STM:
MOD no
NAME SYNO.SurveillanceStation.Stream
PATH entry.cgi
VER 1
SVSINFO:
MOD no
NAME SYNO.SurveillanceStation.Info
PATH entry.cgi
VER 8
VIDEOSTM:
MOD no
NAME SYNO.SurveillanceStation.VideoStreaming
PATH entry.cgi
VER 1
VIDEOSTMS:
MOD no
NAME SYNO.SurveillanceStation.VideoStream
PATH SurveillanceStation/videoStreaming.cgi
VER 1
SVSVERSION:
BUILD 6335
MAJOR 8
MINOR 2
SMALL 8
READINGS:
2020-11-27 16:43:17 Availability enabled
2020-09-27 11:10:37 CamAudioType 6
2020-11-27 16:43:11 CamEventNum 1145
2020-11-27 16:43:17 CamExposureControl Unknown
2020-11-27 16:43:17 CamExposureMode Unknown
2020-11-27 16:43:17 CamIP 192.168.123.66
2020-11-27 16:43:11 CamLastRec 20201127PM/Home-20201127-154429-1606488269.mp4
2020-11-27 16:43:11 CamLastRecId 22261
2020-11-27 16:43:11 CamLastRecTime 2020-11-27 / 15:44:29 - 15:45:33
2020-11-27 16:43:17 CamLiveFps
2020-11-27 16:43:17 CamLiveMode Liveview from DS
2020-11-27 16:43:17 CamLiveQuality
2020-11-27 16:43:17 CamLiveResolution 1280x720
2020-11-27 16:43:17 CamLiveStreamNo 1
2020-11-27 16:43:17 CamModel
2020-11-27 16:43:15 CamMotDetSc SVS, sensitivity: 80, threshold: 10
2020-11-27 16:43:17 CamNTPServer
2020-11-27 16:43:17 CamPort 554
2020-11-27 16:43:17 CamPreRecTime 5
2020-11-27 16:43:17 CamRecShare surveillance
2020-11-27 16:43:17 CamRecVolume /volume1
2020-11-27 16:43:10 CamStreamFormat HLS
2020-11-27 16:43:17 CamVendor User Define
2020-11-27 16:43:17 CamVideoFlip true
2020-11-27 16:43:17 CamVideoMirror true
2020-11-27 16:43:17 CamVideoRotate false
2020-11-27 16:43:17 CamVideoType H.264
2020-11-27 16:43:17 CamblPresetSpeed false
2020-11-27 16:43:09 CapAudioOut false
2020-11-27 16:43:09 CapChangeSpeed false
2020-11-27 16:43:17 CapPIR false
2020-11-27 16:43:09 CapPTZAbs false
2020-11-27 16:43:09 CapPTZAutoFocus false
2020-11-27 16:43:09 CapPTZDirections 0
2020-11-27 16:43:09 CapPTZFocus false
2020-11-27 16:43:09 CapPTZHome false
2020-11-27 16:43:09 CapPTZIris false
2020-11-27 16:43:09 CapPTZObjTracking false
2020-11-27 16:43:09 CapPTZPan false
2020-11-27 16:43:09 CapPTZPresetNumber 0
2020-11-27 16:43:09 CapPTZTilt false
2020-11-27 16:43:09 CapPTZZoom false
2020-11-27 16:43:17 DeviceType Camera
2020-11-27 16:43:19 Error none
2020-11-27 16:43:19 Errorcode none
2020-11-27 16:43:13 LastSnapFilename Home-20201127-1641179222.jpg
2020-11-27 16:43:13 LastSnapId 5330
2020-11-27 16:43:13 LastSnapTime 2020-11-27 / 16:41:17
2020-11-27 16:43:17 LastUpdateTime 2020-11-27 / 16:43:17
2020-11-27 16:43:09 PollState Active - next time: 16:46:39
2020-11-27 16:43:17 Record Stop
2020-11-27 16:43:10 SVSlicenseNumber 2
2020-11-27 16:43:10 SVSuserPriv Admin
2020-11-27 16:43:10 SVSversion 8.2.8-6335
2020-11-27 16:43:19 StmKey "d35283a43a67bfdd669ba1e6a1b2cbc9"
2020-11-27 16:43:17 UsedSpaceMB 14.968
2020-11-27 16:43:17 VideoFolder http://192.168.123.62:8081/surveillance
2020-11-27 16:43:10 compstate true
2020-11-27 16:41:19 sendChatState Chat message [0] of transaction "1221" for "admin" added to "SynChatBot" sendqueue
2020-11-27 16:41:19 sendTeleState Telegram message [0] of transaction "1221" sent to "JXXX_RXXX" by "FHEMstatus"
2020-11-27 16:43:17 state off
Attributes:
devStateIcon .*isable.*:set_off .*nap:li_wht_on
httptimeout 20
icon it_camera
pollcaminfoall 210
pollnologging 1
room SSCam
session DSM
snapChatTxt chatbot => SynChatBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt
snapGalleryBoost 1
snapGalleryHtmlAttr width="325" height="225"
snapGallerySize Full
snapTelegramTxt tbot => FHEMstatus, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME ein Schnappschuss erstellt
videofolderMap http://192.168.123.62:8081/surveillance
webCmd on:off:snap:enable:disable:runView:stopView
list
Internals:
DEF 192.168.123.62
FUUID 5f7da29d-f33f-95bd-ef19-84b8a020e87ffc09
FVERSION 50_SSChatBot.pm:v1.12.0-s23220/2020-11-23
FW WEBSSChatBot
INADDR 192.168.123.62
INPORT 5000
INPROT http
MODEL ChatBot
NAME SynChatBot
NR 442
OPMODE
OUTDEF http://raspberrypi.fritz.box:8082/sschat/outchat?botname=SynChatBot&fwcsrf=5f7da29e
RESEND next planned SendQueue start: immediately by next entry
STATE Error
TOKEN Set
TYPE SSChatBot
HELPER:
INFIX outchat
PACKAGE main::FHEM::SSChatBot
TOKEN g5[KeJizfH|{]Xf7jVg]jsUXe
WX�Pfom6PS>F
USERFETCHED 1
VERSION 1.12.0
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.20.6
API:
PARSET 1
EXTERNAL:
MOD no
NAME SYNO.Chat.External
PATH entry.cgi
VER 2
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
USERS:
Joerg_chat:
email
id 9
nickname
status offline
Kalender:
email
id 5
nickname
status offline
admin:
email
id 6
nickname JXXX
status offline
plex:
email
id 4
nickname
status offline
OLDREADINGS:
READINGS:
2020-11-27 16:41:19 Error illegal file name or path
2020-11-27 16:41:19 Errorcode 117
2020-11-27 16:41:19 QueueLength 3
2020-11-20 15:21:00 recActions
2020-11-20 15:21:00 recActionsValue
2020-11-20 15:21:00 recCallbackId
2020-11-20 15:21:00 recChannelId
2020-11-20 15:21:00 recChannelname
2020-11-20 15:21:00 recCommand
2020-11-20 15:21:00 recPostId 25769803797
2020-11-20 15:21:00 recText set SSCam. Home snap
2020-11-20 15:21:00 recTimestamp 2020-11-20 15:20:59
2020-11-20 15:21:00 recTriggerword
2020-11-20 15:21:00 recUserId 6
2020-11-20 15:21:00 recUsername admin
2020-11-20 15:21:00 sendCommandReturn
2020-11-27 09:46:25 sendPostId 25769803955
2020-11-27 09:46:25 sendUserId 6
[b] 2020-11-27 16:41:19 state Error[/b]
Attributes:
defaultPeer admin
room Chat
Das Bild kann ich aber erfolgreich mit
http://192.168.123.62:8081/surveillance/@Snapshot/Home-20201127-1641179222.jpg
aufrufen. Der Pfad sollte also stimmen.
Sorry, hab ich etwas nicht beachtet?
LG Jörg
Hallo Jörg,
sieht auf den ersten Blick erstal ok aus.
Wenn du die sendqueue im ChatBot noch nicht gelöscht hast, mach mal ein
set SynChatBot listSendqueue
und poste den Inhalt bitte.
Hallo,
leider war ich gezwungen fhem komplett neu aufzusetzen (SSD defekt), da ein Restore nicht funktioniert hat. Nach der Neuinstallation funktionierte SSChatBot bei mir nicht mehr richtig. Im alten System hatte ich nicht das aktuellste Modul verwendet. Jetzt ist auf einem Raspi 4 alles aktuell, d.h., Betriebssystem Raspberry Pi OS Lite (32-bit) gestern heruntergeladen und installiert. Danach fhem (6.0) installiert und aktualisiert. Alle Module komplett neu angelegt.
Problem:
Nach einem Shutdown von fhem funktioniert das Senden sowohl von den Modulen aus als auch über die Kommandozeile. Ein über Chat gesendetes Kommando kommt auch in SSChatBot an, es wird in den Readings angezeigt. Danach ist ein Senden nicht mehr möglich.
Inhalt Log:
2020.11.28 09:51:22.476 4: fhemBot - ####################################################
2020.11.28 09:51:22.476 4: fhemBot - ### start Chat operation Receive
2020.11.28 09:51:22.476 4: fhemBot - ####################################################
2020.11.28 09:51:22.476 5: fhemBot - raw data received (urlDecoded):
$VAR1 = 'botname="fhemBot" fwcsrf="5fc1f676" token="4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9" user_id="4" username="admin" post_id="266287973383" thread_id="0" timestamp="1606553482437" text="Wetter"';
2020.11.28 09:51:22.476 4: fhemBot - received data decoded:
$VAR1 = {
'botname' => 'fhemBot',
'fwcsrf' => '5fc1f676',
'post_id' => '266287973383',
'text' => 'Wetter',
'thread_id' => '0',
'timestamp' => '2020-11-28 09:51:22',
'token' => '4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9',
'user_id' => '4',
'username' => 'admin'
};
2020.11.28 09:51:44.206 2: HMCCU: [d_ccu : 2522] Invalid channel CENTRAL
2020.11.28 09:52:37.098 5: fhemBot - Add Item to queue - Index 18:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => 'TestFehler',
'userid' => 5
};
2020.11.28 09:52:37.099 5: fhemBot - Add Item to queue - Index 19:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => 'TestFehler',
'userid' => 11
};
2020.11.28 09:52:37.099 5: fhemBot - Add Item to queue - Index 20:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => 'TestFehler',
'userid' => 29
};
2020.11.28 09:52:37.100 5: fhemBot - Add Item to queue - Index 21:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => 'TestFehler',
'userid' => 6
};
2020.11.28 09:52:37.100 5: fhemBot - Add Item to queue - Index 22:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => 'TestFehler',
'userid' => 4
};
2020.11.28 09:52:37.101 5: fhemBot - Add Item to queue - Index 23:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => 'TestFehler',
'userid' => 16
};
2020.11.28 09:52:37.102 5: fhemBot - Add Item to queue - Index 24:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => 'TestFehler',
'userid' => 9
};
2020.11.28 09:52:37.102 5: fhemBot - Add Item to queue - Index 25:
$VAR1 = {
'attachment' => '',
'channel' => '',
'fileUrl' => '',
'method' => 'chatbot',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => 'TestFehler',
'userid' => 30
};
2020.11.28 09:52:37.103 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/50_SSChatBot.pm line 866.
2020.11.28 09:52:37.103 4: fhemBot - Operation "receiveData (idx: )" is still running. Next operation start postponed
List des ChatBot:
Internals:
DEF 192.168.178.92 5001 https
FUUID 5fc1f676-f33f-d0e8-649c-f783e07176d8915c
FVERSION 50_SSChatBot.pm:v1.12.0-s23220/2020-11-23
FW WEBSSChatBot
INADDR 192.168.178.92
INPORT 5001
INPROT https
MODEL ChatBot
NAME fhemBot
NR 279
OPMODE receiveData
OUTDEF http://raspberrypi4.fritz.box:8082/sschat/outchat?botname=fhemBot&fwcsrf=5fc1f676
RESEND next planned SendQueue start: immediately by next entry
STATE active
TOKEN Set
TYPE SSChatBot
HELPER:
INFIX outchat
PACKAGE FHEM::SSChatBot
TOKEN QL[xUxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxV9[[^MTrgkqr\6_}
SX[p]4}ORS>F
USERFETCHED 1
VERSION 1.12.0
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.20.6
API:
PARSET 1
EXTERNAL:
MOD no
NAME SYNO.Chat.External
PATH entry.cgi
VER 2
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
USERS:
fhem:
email xxxxxxx@online.de
id 16
nickname
status offline
OLDREADINGS:
READINGS:
2020-11-28 09:51:22 Error none
2020-11-28 09:51:22 Errorcode none
2020-11-28 09:52:37 QueueLength 8
2020-11-28 09:51:22 recActions
2020-11-28 09:51:22 recActionsValue
2020-11-28 09:51:22 recCallbackId
2020-11-28 09:51:22 recChannelId
2020-11-28 09:51:22 recChannelname
2020-11-28 09:51:22 recCommand
2020-11-28 09:51:22 recPostId 266287973383
2020-11-28 09:51:22 recText Wetter
2020-11-28 09:51:22 recTimestamp 2020-11-28 09:51:22
2020-11-28 09:51:22 recTriggerword
2020-11-28 09:51:22 recUserId 4
2020-11-28 09:51:22 recUsername admin
2020-11-28 09:51:22 sendCommandReturn
2020-11-28 09:48:29 sendPostId 322122547207
2020-11-28 09:48:29 sendUserId 30
2020-11-28 09:51:22 state active
Attributes:
defaultPeer pipopa
room Nachricht
verbose 5
Dort, wo ich nicht sicher war, ob ich das öffentlich zeigen soll, habe ich x eingefügt.
Nach einem Shutdown von fhem geht das Senden wieder, bis erneut empfangen wird.
Grüße
Eberhard
Hallo Eberhard,
vermutlich hast du die Datei SMUtils nicht aktuell.
Mach mal ein komplettes FHEM update und wenn es danach immer noch nicht klappen sollte, bitte ein list des devices.
Danke für die Rückmeldung.
Hier das List nach update all:
Internals:
DEF 192.168.178.92 5001 https
FUUID 5fc1f676-f33f-d0e8-649c-f783e07176d8915c
FVERSION 50_SSChatBot.pm:v1.12.0-s23220/2020-11-23
FW WEBSSChatBot
INADDR 192.168.178.92
INPORT 5001
INPROT https
MODEL ChatBot
NAME fhemBot
NR 279
OPMODE
OUTDEF http://raspberrypi4.fritz.box:8082/sschat/outchat?botname=fhemBot&fwcsrf=5fc1f676
RESEND next planned SendQueue start: immediately by next entry
STATE active
TOKEN Set
TYPE SSChatBot
HELPER:
INFIX outchat
PACKAGE FHEM::SSChatBot
TOKEN QL[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr\6_}
SX[p]4}ORS>F
USERFETCHED 1
VERSION 1.12.0
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.20.6
API:
PARSET 1
EXTERNAL:
MOD no
NAME SYNO.Chat.External
PATH entry.cgi
VER 2
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
USERS:
pi:
email xxxxxx@online.de
id 11
nickname
status offline
OLDREADINGS:
READINGS:
2020-11-28 10:13:01 Error none
2020-11-28 10:13:01 Errorcode none
2020-11-28 10:13:01 QueueLength 0
2020-11-28 09:51:22 recActions
2020-11-28 09:51:22 recActionsValue
2020-11-28 09:51:22 recCallbackId
2020-11-28 09:51:22 recChannelId
2020-11-28 09:51:22 recChannelname
2020-11-28 09:51:22 recCommand
2020-11-28 09:51:22 recPostId 266287973383
2020-11-28 09:51:22 recText Wetter
2020-11-28 09:51:22 recTimestamp 2020-11-28 09:51:22
2020-11-28 09:51:22 recTriggerword
2020-11-28 09:51:22 recUserId 4
2020-11-28 09:51:22 recUsername admin
2020-11-28 09:51:22 sendCommandReturn
2020-11-28 09:48:29 sendPostId 322122547207
2020-11-28 09:48:29 sendUserId 30
2020-11-28 10:12:27 state active
Attributes:
defaultPeer pijfdkjflk
room Nachricht
verbose 0
Nachtrag: set apIinfo funktioniert nach dem Empfangen auch nicht mehr.
Habe einen kleinen Fehler festgestellt und gleich behoben. Zieh dir die Version aus meinem Contrib.
Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben und danach FHEM restarten:
"wget -qO ./FHEM/50_SSChatBot.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/50_SSChatBot.pm"
LG,
Heiko
Hallo Heiko,
bei mir tuts nicht.
List des Device nach dem Empfangen und nach dem Einspielen der neuen Version:
Internals:
DEF 192.168.178.92 5001 https
FUUID 5fc1f676-f33f-d0e8-649c-f783e07176d8915c
FVERSION 50_SSChatBot.pm:v1.12.1-s23220/2020-11-23
FW WEBSSChatBot
INADDR 192.168.178.92
INPORT 5001
INPROT https
MODEL ChatBot
NAME fhemBot
NR 279
OUTDEF http://raspberrypi4.fritz.box:8082/sschat/outchat?botname=fhemBot&fwcsrf=5fc1f676
RESEND next planned SendQueue start: immediately by next entry
STATE active
TOKEN Set
TYPE SSChatBot
HELPER:
INFIX outchat
PACKAGE FHEM::SSChatBot
TOKEN QL[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr\6_}
SX[p]4}ORS>F
USERFETCHED 1
VERSION 1.12.1
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.20.6
API:
PARSET 1
EXTERNAL:
MOD no
NAME SYNO.Chat.External
PATH entry.cgi
VER 2
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
USERS:
Buero:
email ererer@online.de
id 11
nickname
status offline
Eberhard:
email dsfsdfsdf@online.de
id 9
nickname
status offline
OLDREADINGS:
READINGS:
2020-11-28 10:27:52 Error none
2020-11-28 10:27:52 Errorcode none
2020-11-28 10:27:31 QueueLength 0
2020-11-28 10:27:52 recActions
2020-11-28 10:27:52 recActionsValue
2020-11-28 10:27:52 recCallbackId
2020-11-28 10:27:52 recChannelId
2020-11-28 10:27:52 recChannelname
2020-11-28 10:27:52 recCommand
2020-11-28 10:27:52 recPostId 266287973385
2020-11-28 10:27:52 recText Wetter
2020-11-28 10:27:52 recTimestamp 2020-11-28 10:27:52
2020-11-28 10:27:52 recTriggerword
2020-11-28 10:27:52 recUserId 4
2020-11-28 10:27:52 recUsername admin
2020-11-28 10:27:52 sendCommandReturn
2020-11-28 10:25:21 sendPostId 322122547208
2020-11-28 10:25:21 sendUserId 30
2020-11-28 10:27:52 state active
Attributes:
defaultPeer pi,Buero,Marliese,Mobiltelefon,admin,fhem,Eberhard,Shuttle
room Nachricht
verbose 0
Was sendest du an den Bot ?
Hallo Heiko,
nach einem Neustart des Raspi funktioniert das Modul wieder. Ich sende aus verschiedenen DOIF Texte und Inhalte von Readings.
DANKE für die superschnelle Hilfe und für das Modul.
Gruß Eberhard
Hallo Heiko,
ich was etwas zu schnell. Auf die Befehle die ich an den Bot sende wird erst reagiert, wenn ich zusätzlich im Modul mit set ... irgend etwas sende.
Mein doif mit dem ich zzt. arbeite:
Internals:
DEF ([fhemBot:recText] eq "Tor zu")
(set Garage_Tor on)
DOELSEIF
([fhemBot:recText] eq "Tor auf")
(set Garage_Tor on)
DOELSEIF
([fhemBot:recText] eq "Garage")
(set fhemBot asyncSendItem Status Garage [HM_Garage_Tor]/[HM_Garage_Tor_Auf])
DOELSEIF
([fhemBot:recText] eq "Diesel")
(set fhemBot asyncSendItem
HEM-Mössingen [OUT_HEMMoessingen:diesel]\n
Jet-Ofterdingen [OUT_JetOfterd:diesel]\n
MTB-Ofterdingen [OUT_MTBOfterd:diesel]\n
Aral-Bodelshausen [OUT_AralBodelshausen:diesel]\n
Shell-Hechingen [OUT_ShellHCH:diesel]\n
Aral-Hechingen [OUT_AralHCH:diesel]\n
Agip-Hechingen [OUT_AgipHCH:diesel])
DOELSEIF
([fhemBot:recText] eq "Wetter")
(set fhemBot asyncSendItem
Temperatur___: [HM_Wetterstation:1.TEMPERATURE] °C\n
Luftfeuchte__: [HM_Wetterstation:1.HUMIDITY] %\n
Windgeschwin: [HM_Wetterstation:1.WIND_SPEED] km/h\n
Windrichtung_: [HM_Wetterstation:1.WIND_DIRECTION]\n
Regen Summe_: [HM_Wetterstation:1.RAIN_COUNTER] mm\n
Regen Heute__: [HM_Wetterstation:1.Regen_heute] mm\n
Regen Vortag__:[HM_Wetterstation:1.Regen_gestern] mm\n
Obst_Temperatur:[HM_Temp_Obst:1.TEMPERATURE] °C)
DOELSEIF
([fhemBot:recText] eq "Heizung")
(set fhemBot asyncSendItem
Gewaechshaus: [MQTT2_GWH:tempUnten] °C\n
Wohnzimmer: [MQTT2_Heizung:tempWohnenRaum] °C\n
Esszimmer: [MQTT2_Heizung:tempEssenRaum] °C\n
Kueche: [MQTT2_Heizung:tempKuecheRaum] °C\n
Schlafzimmer: [MQTT2_Heizung:tempSchlafzimmerRaum] °C\n
Studio: [MQTT2_Heizung:tempStudioRaum] °C\n
Buero: [MQTT2_Heizung:tempBueroRaum] °C\n
Keller: [HM_Wandthermostat_Keller:1.ACTUAL_TEMPERATURE] °C\n
Bad: [MQTT2_Heizung:tempBadRaum] °C\n
Vorlauf: [MQTT2_Heizung:tempVorlauf] °C)
DOELSEIF
([fhemBot:recText] eq "Pv")
(set fhemBot asyncSendItem
Leistung 2.16 kWp: [MQTT2_Strom:Leistung_PV21] W\n
Leistung 1.8 kWp: [MQTT2_Strom:Leistung_PV18] W\n
kWh_aktuell 2.16 kWp: [PV21_Ertraege:MQTT2_Strom_PV21_Z_EnergyDay] \n
kWh_Vortag 2.16 kWp: [PV21_Ertraege:MQTT2_Strom_PV21_Z_EnergyDayLast] \n
kWh_Aktuell 1.8 kWp: [PV18_Ertraege:MQTT2_Strom_PV18_Z_EnergyDay] \n
kWh_Vortag 1.8 kWp: [PV18_Ertraege:MQTT2_Strom_PV18_Z_EnergyDayLast])
DOELSEIF
([fhemBot:recText] eq "Pvt")
(set fhemBot asyncSendItem text="PV taeglich" svg="SVG_fl_PV_taeglich")
DOELSEIF
([fhemBot:recText] eq "Pva")
(set fhemBot asyncSendItem text="PV aktuell" svg="SVG_fl_PV_1")
DOELSEIF
([fhemBot:recText] eq "Hilfe")
(set fhemBot asyncSendItem
Pvt ist Grafik PV täglich\n
Pva ist Grafik PV aktuell\n
Pv ist PV in Zahlen\n
Heizung\n
Wetter\n
Garage\n
Diesel\n
Tor auf zu)
DOELSE
(set fhemBot asyncSendItem Nicht verstanden)
FUUID 5fc1102f-f33f-d0e8-3ecf-4fdaf57ff2254379
MODEL FHEM
NAME doif_SynoBotGarage
NOTIFYDEV fhemBot,global
NR 135
NTFY_ORDER 50-doif_SynoBotGarage
STATE cmd_10
TYPE DOIF
VERSION 23235 2020-11-25 22:42:28
READINGS:
2020-11-28 11:25:20 Device fhemBot
2020-11-28 11:25:20 cmd 10
2020-11-28 11:25:20 cmd_event fhemBot
2020-11-28 11:25:20 cmd_nr 10
2020-11-28 11:25:20 e_fhemBot_recText Hilfe
2020-11-28 11:18:39 mode enabled
2020-11-28 11:25:20 state cmd_10
Regex:
accu:
cond:
fhemBot:
0:
recText ^fhemBot$:^recText:
1:
recText ^fhemBot$:^recText:
2:
recText ^fhemBot$:^recText:
3:
recText ^fhemBot$:^recText:
4:
recText ^fhemBot$:^recText:
5:
recText ^fhemBot$:^recText:
6:
recText ^fhemBot$:^recText:
7:
recText ^fhemBot$:^recText:
8:
recText ^fhemBot$:^recText:
9:
recText ^fhemBot$:^recText:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Tor zu"
1 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Tor auf"
2 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Garage"
3 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Diesel"
4 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Wetter"
5 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Heizung"
6 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Pv"
7 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Pvt"
8 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Pva"
9 ::ReadingValDoIf($hash,'fhemBot','recText') eq "Hilfe"
do:
0:
0 set Garage_Tor on
1:
0 set Garage_Tor on
10:
0 set fhemBot asyncSendItem Nicht verstanden
2:
0 set fhemBot asyncSendItem Status Garage [HM_Garage_Tor]/[HM_Garage_Tor_Auf]
3:
0 set fhemBot asyncSendItem HEM-Mössingen [OUT_HEMMoessingen:diesel]\n Jet-Ofterdingen [OUT_JetOfterd:diesel]\n MTB-Ofterdingen [OUT_MTBOfterd:diesel]\n Aral-Bodelshausen [OUT_AralBodelshausen:diesel]\n Shell-Hechingen [OUT_ShellHCH:diesel]\n Aral-Hechingen [OUT_AralHCH:diesel]\n Agip-Hechingen [OUT_AgipHCH:diesel]
4:
0 set fhemBot asyncSendItem Temperatur___: [HM_Wetterstation:1.TEMPERATURE] °C\n Luftfeuchte__: [HM_Wetterstation:1.HUMIDITY] %\n Windgeschwin: [HM_Wetterstation:1.WIND_SPEED] km/h\n Windrichtung_: [HM_Wetterstation:1.WIND_DIRECTION]\n Regen Summe_: [HM_Wetterstation:1.RAIN_COUNTER] mm\n Regen Heute__: [HM_Wetterstation:1.Regen_heute] mm\n Regen Vortag__:[HM_Wetterstation:1.Regen_gestern] mm\n Obst_Temperatur:[HM_Temp_Obst:1.TEMPERATURE] °C
5:
0 set fhemBot asyncSendItem Gewaechshaus: [MQTT2_GWH:tempUnten] °C\n Wohnzimmer: [MQTT2_Heizung:tempWohnenRaum] °C\n Esszimmer: [MQTT2_Heizung:tempEssenRaum] °C\n Kueche: [MQTT2_Heizung:tempKuecheRaum] °C\n Schlafzimmer: [MQTT2_Heizung:tempSchlafzimmerRaum] °C\n Studio: [MQTT2_Heizung:tempStudioRaum] °C\n Buero: [MQTT2_Heizung:tempBueroRaum] °C\n Keller: [HM_Wandthermostat_Keller:1.ACTUAL_TEMPERATURE] °C\n Bad: [MQTT2_Heizung:tempBadRaum] °C\n Vorlauf: [MQTT2_Heizung:tempVorlauf] °C
6:
0 set fhemBot asyncSendItem Leistung 2.16 kWp: [MQTT2_Strom:Leistung_PV21] W\n Leistung 1.8 kWp: [MQTT2_Strom:Leistung_PV18] W\n kWh_aktuell 2.16 kWp: [PV21_Ertraege:MQTT2_Strom_PV21_Z_EnergyDay] \n kWh_Vortag 2.16 kWp: [PV21_Ertraege:MQTT2_Strom_PV21_Z_EnergyDayLast] \n kWh_Aktuell 1.8 kWp: [PV18_Ertraege:MQTT2_Strom_PV18_Z_EnergyDay] \n kWh_Vortag 1.8 kWp: [PV18_Ertraege:MQTT2_Strom_PV18_Z_EnergyDayLast]
7:
0 set fhemBot asyncSendItem text="PV taeglich" svg="SVG_fl_PV_taeglich"
8:
0 set fhemBot asyncSendItem text="PV aktuell" svg="SVG_fl_PV_1"
9:
0 set fhemBot asyncSendItem Pvt ist Grafik PV täglich\n Pva ist Grafik PV aktuell\n Pv ist PV in Zahlen\n Heizung\n Wetter\n Garage\n Diesel\n Tor auf zu
helper:
DEVFILTER ^global$|^fhemBot$
NOTIFYDEV global|fhemBot
event recActions: ,recCallbackId: ,recActionsValue: ,recChannelId: ,recChannelname: ,recUserId: 4,recUsername: admin,recPostId: 266287973408,recTimestamp: 2020-11-28 11:25:20,recText: Hilfe,recTriggerword: ,recCommand: ,sendCommandReturn: ,Errorcode: none,Error: none,active
globalinit 1
last_timer 0
sleeptimer -1
timerdev fhemBot
timerevent recActions: ,recCallbackId: ,recActionsValue: ,recChannelId: ,recChannelname: ,recUserId: 4,recUsername: admin,recPostId: 266287973408,recTimestamp: 2020-11-28 11:25:20,recText: Hilfe,recTriggerword: ,recCommand: ,sendCommandReturn: ,Errorcode: none,Error: none,active
triggerDev fhemBot
timerevents:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 4
recUsername: admin
recPostId: 266287973408
recTimestamp: 2020-11-28 11:25:20
recText: Hilfe
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
active
QueueLength: 17
QueueLength: 18
QueueLength: 19
QueueLength: 20
QueueLength: 21
QueueLength: 22
QueueLength: 23
QueueLength: 24
timereventsState:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 4
recUsername: admin
recPostId: 266287973408
recTimestamp: 2020-11-28 11:25:20
recText: Hilfe
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
state: active
triggerEvents:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 4
recUsername: admin
recPostId: 266287973408
recTimestamp: 2020-11-28 11:25:20
recText: Hilfe
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
active
QueueLength: 17
QueueLength: 18
QueueLength: 19
QueueLength: 20
QueueLength: 21
QueueLength: 22
QueueLength: 23
QueueLength: 24
triggerEventsState:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 4
recUsername: admin
recPostId: 266287973408
recTimestamp: 2020-11-28 11:25:20
recText: Hilfe
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
state: active
internals:
perlblock:
readings:
all fhemBot:recText
trigger:
uiState:
uiTable:
Attributes:
alias Nachrichten_Dieselpreise_SynoBot
do always
room Garage,Info->Tankstellen,Logik,Nachricht
Ergänzung: Wenn ich set fhemBot listSendqueue ausführe, werden die nicht gesendeten Daten angezeigt.
Hallo Eberhard,
ZitatAuf die Befehle die ich an den Bot sende wird erst reagiert, wenn ich zusätzlich im Modul mit set ... irgend etwas sende.
... war eine wichtige Info.
Zieh mal wiede die contrib Version und probiere es aus.
mit der geänderten Version funktionierts bei mir wieder wie einst!
DANKE für die Hilfe,
sollte noch was sein, melde ich mich.
Gruß
Eberhard
Prima Eberhard, kannst du bitte die Version aus dem contrib nochmal testen ?
Ich habe noch eine Kleinigkeit nachgebessert und will nur sicher sein, dass sie auch woanders funzt.
LG,
Heiko
Heiko, bei mir funktionierts.....
Danke für die Info. Habe die korrigierte Version eingecheckt und wird morgen früh im Update verteilt.
Bin jetzt erst dazugekommen deinen Post zu lesen.
Zitat von: DS_Starter am 27 November 2020, 17:08:53
set SynChatBot listSendqueue
Ergebnis:
3 => userid=>6, text=>Ein Schnappschuss von Terrassentür wurde ausgelöst, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>record not valid, fileUrl=>[Home:VideoFolder]/@Snapshot/[Home:LastSnapFilename], channel=>, attachment=>
4 => userid=>6, text=>Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>illegal file name or path, fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/, channel=>, attachment=>
5 => userid=>6, text=>Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>illegal file name or path, fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/, channel=>, attachment=>
12 => userid=>6, text=>Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>illegal file name or path, fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/, channel=>, attachment=>
13 => userid=>6, text=>Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>illegal file name or path, fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/, channel=>, attachment=>
14 => userid=>6, text=>Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>illegal file name or path, fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/, channel=>, attachment=>
15 => userid=>6, text=>Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>illegal file name or path, fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/, channel=>, attachment=>
16 => userid=>6, text=>Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>illegal file name or path, fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/, channel=>, attachment=>
17 => userid=>6, text=>Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>illegal file name or path, fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/, channel=>, attachment=>
Guten morgen,
ja hier sieht man den Grund. Die Angabe des zu versendenden Files ist unvollständig, da fehlt das File:
fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/
Und das ist sowieso falsch:
fileUrl=>[Home:VideoFolder]/@Snapshot/[Home:LastSnapFilename]
Mach mal bitte ein List deines Cam-Devices und des Chatbot Devices. Du verwendest zum Versand die in SSCam integrierte Methode oder ?
LG
Hallo Heiko,
... das war auch nur ein Test.
fileUrl=>[Home:VideoFolder]/@Snapshot/[Home:LastSnapFilename]
list Cam-Device
Internals:
CAMID 1
CAMNAME Home
COMPATIBILITY 8.2.8
CREDENTIALS Set
DEF Home 192.168.123.62 5000
FUUID 5ce44486-f33f-95bd-b78c-db65a251dbf6b4d4
FVERSION 49_SSCam.pm:v9.8.2-s22912/2020-10-04
MODEL User Define -
NAME SSCam.Home
NR 409
OPMODE getStmUrlPath
PROTOCOL http
SERVERADDR 192.168.123.62
SERVERPORT 5000
STATE off
TYPE SSCam
HELPER:
ACTIVE off
CREDENTIALS \[WzdY5?dKlpipXwlnrA
HLSSTREAM inactive
LOGINRETRIES 0
OLDPTZHOME
OLDVALPOLL 210
OLDVALPOLLNOLOGGING 1
PACKAGE FHEM::SSCam
RECTIME_DEF 15
SID RcqxlY5HnuYYX0P4HSBTsO4dnUVOQaAPxRm4YOPdyKcFUqb8JzBp6mOeEJ3LlVabm9Mw7G720GvPSUEBTYjpIM
SNAPLAG 3
SNAPLIMIT 3
SNAPNUMCOUNT 1
STMKEYMJPEGHTTP http://192.168.123.62:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=1&StmKey="972ce6f3f05cae7ddbc9271e8a935e44"
STMKEYMXPEGHTTP http://192.168.123.62:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mxpeg&cameraId=1&StmKey="972ce6f3f05cae7ddbc9271e8a935e44"
STMKEYUNICST rtsp://syno:972ce6f3f05cae7ddbc9271e8a935e44@192.168.123.62:554/Sms=1.unicast
STMKEYUNICSTOVERHTTP rtsp://192.168.123.62:5000/webman/3rdparty/SurveillanceStation/cgi/rtsp.cgi?Sms=1.unicast&DsId=0&StmKey=972ce6f3f05cae7ddbc9271e8a935e44
TOTALCNT 4019
VERSION 9.8.2
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.20.6
API:
PARSET 1
AUDIOSTM:
MOD no
NAME SYNO.SurveillanceStation.AudioStream
PATH SurveillanceStation/audioStreaming.cgi
VER 2
AUTH:
MOD no
NAME SYNO.API.Auth
PATH auth.cgi
VER 6
CAM:
MOD no
NAME SYNO.SurveillanceStation.Camera
PATH entry.cgi
VER 9
CAMEVENT:
MOD no
NAME SYNO.SurveillanceStation.Camera.Event
PATH entry.cgi
VER 1
EVENT:
MOD no
NAME SYNO.SurveillanceStation.Event
PATH entry.cgi
VER 5
EXTEVT:
MOD no
NAME SYNO.SurveillanceStation.ExternalEvent
PATH entry.cgi
VER 1
EXTREC:
MOD no
NAME SYNO.SurveillanceStation.ExternalRecording
PATH entry.cgi
VER 3
HMODE:
MOD no
NAME SYNO.SurveillanceStation.HomeMode
PATH entry.cgi
VER 1
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
LOG:
MOD no
NAME SYNO.SurveillanceStation.Log
PATH entry.cgi
VER 3
PRESET:
MOD no
NAME SYNO.SurveillanceStation.PTZ.Preset
PATH entry.cgi
VER 1
PTZ:
MOD no
NAME SYNO.SurveillanceStation.PTZ
PATH entry.cgi
VER 6
REC:
MOD no
NAME SYNO.SurveillanceStation.Recording
PATH entry.cgi
VER 6
SNAPSHOT:
MOD no
NAME SYNO.SurveillanceStation.SnapShot
PATH entry.cgi
VER 1
STM:
MOD no
NAME SYNO.SurveillanceStation.Stream
PATH entry.cgi
VER 1
SVSINFO:
MOD no
NAME SYNO.SurveillanceStation.Info
PATH entry.cgi
VER 8
VIDEOSTM:
MOD no
NAME SYNO.SurveillanceStation.VideoStreaming
PATH entry.cgi
VER 1
VIDEOSTMS:
MOD no
NAME SYNO.SurveillanceStation.VideoStream
PATH SurveillanceStation/videoStreaming.cgi
VER 1
SVSVERSION:
BUILD 6335
MAJOR 8
MINOR 2
SMALL 8
READINGS:
2020-11-29 12:05:13 Availability enabled
2020-09-27 11:10:37 CamAudioType 6
2020-11-29 12:05:09 CamEventNum 1148
2020-11-29 12:05:13 CamExposureControl Unknown
2020-11-29 12:05:13 CamExposureMode Unknown
2020-11-29 12:05:13 CamIP 192.168.123.66
2020-11-29 12:05:09 CamLastRec 20201129AM/Home-20201129-114239-1606646559.mp4
2020-11-29 12:05:09 CamLastRecId 22355
2020-11-29 12:05:09 CamLastRecTime 2020-11-29 / 11:42:39 - 11:43:13
2020-11-29 12:05:13 CamLiveFps
2020-11-29 12:05:13 CamLiveMode Liveview from DS
2020-11-29 12:05:13 CamLiveQuality
2020-11-29 12:05:13 CamLiveResolution 1280x720
2020-11-29 12:05:13 CamLiveStreamNo 1
2020-11-29 12:05:13 CamModel
2020-11-29 12:05:11 CamMotDetSc SVS, sensitivity: 80, threshold: 10
2020-11-29 12:05:13 CamNTPServer
2020-11-29 12:05:13 CamPort 554
2020-11-29 12:05:13 CamPreRecTime 5
2020-11-29 12:05:13 CamRecShare surveillance
2020-11-29 12:05:13 CamRecVolume /volume1
2020-11-29 12:05:08 CamStreamFormat HLS
2020-11-29 12:05:13 CamVendor User Define
2020-11-29 12:05:13 CamVideoFlip true
2020-11-29 12:05:13 CamVideoMirror true
2020-11-29 12:05:13 CamVideoRotate false
2020-11-29 12:05:13 CamVideoType H.264
2020-11-29 12:05:13 CamblPresetSpeed false
2020-11-29 12:05:05 CapAudioOut false
2020-11-29 12:05:05 CapChangeSpeed false
2020-11-29 12:05:13 CapPIR false
2020-11-29 12:05:05 CapPTZAbs false
2020-11-29 12:05:05 CapPTZAutoFocus false
2020-11-29 12:05:05 CapPTZDirections 0
2020-11-29 12:05:05 CapPTZFocus false
2020-11-29 12:05:05 CapPTZHome false
2020-11-29 12:05:05 CapPTZIris false
2020-11-29 12:05:05 CapPTZObjTracking false
2020-11-29 12:05:05 CapPTZPan false
2020-11-29 12:05:05 CapPTZPresetNumber 0
2020-11-29 12:05:05 CapPTZTilt false
2020-11-29 12:05:05 CapPTZZoom false
2020-11-29 12:05:13 DeviceType Camera
2020-11-29 12:05:15 Error none
2020-11-29 12:05:15 Errorcode none
2020-11-29 12:05:07 LastSnapFilename Home-20201128-1033555519.jpg
2020-11-29 12:05:07 LastSnapId 5342
2020-11-29 12:05:07 LastSnapTime 2020-11-28 / 10:33:55
2020-11-29 12:05:13 LastUpdateTime 2020-11-29 / 12:05:13
2020-11-29 12:05:04 PollState Active - next time: 12:08:34
2020-11-29 12:05:13 Record Stop
2020-11-29 12:05:06 SVSlicenseNumber 2
2020-11-29 12:05:06 SVSuserPriv Admin
2020-11-29 12:05:06 SVSversion 8.2.8-6335
2020-11-29 12:05:15 StmKey "972ce6f3f05cae7ddbc9271e8a935e44"
2020-11-29 12:05:13 UsedSpaceMB 14.800
2020-11-29 12:05:13 VideoFolder http://192.168.123.62:8081/surveillance
2020-11-29 12:05:06 compstate true
2020-11-28 10:33:57 sendChatState Missing at least one required parameter or attribute: subject, chatbot
2020-11-28 10:33:57 sendTeleState Missing at least one required parameter or attribute: telebot
2020-11-29 12:05:13 state off
Attributes:
devStateIcon .*isable.*:set_off .*nap:li_wht_on
httptimeout 20
icon it_camera
pollcaminfoall 210
pollnologging 1
room SSCam
session DSM
snapChatTxt chatbot => SynChatBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt
snapGalleryBoost 1
snapGalleryHtmlAttr width="325" height="225"
snapGallerySize Full
snapTelegramTxt tbot => FHEMstatus, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME ein Schnappschuss erstellt
videofolderMap http://192.168.123.62:8081/surveillance
webCmd on:off:snap:enable:disable:runView:stopView
list Chatbot Device
Internals:
DEF 192.168.123.62
FUUID 5f7da29d-f33f-95bd-ef19-84b8a020e87ffc09
FVERSION 50_SSChatBot.pm:v1.12.0-s23220/2020-11-23
FW WEBSSChatBot
INADDR 192.168.123.62
INPORT 5000
INPROT http
MODEL ChatBot
NAME SynChatBot
NR 442
OPMODE
OUTDEF http://raspberrypi.fritz.box:8082/sschat/outchat?botname=SynChatBot&fwcsrf=5f7da29e
RESEND next planned SendQueue start: immediately by next entry
STATE active
TOKEN Set
TYPE SSChatBot
HELPER:
INFIX outchat
PACKAGE main::FHEM::SSChatBot
TOKEN g5[KeJizfH|{]Xf7jVg]jsUXe
WX�Pfom6PS>F
USERFETCHED 1
VERSION 1.12.0
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.20.6
API:
PARSET 1
EXTERNAL:
MOD no
NAME SYNO.Chat.External
PATH entry.cgi
VER 2
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
USERS:
Joerg_chat:
email
id 9
nickname
status offline
Kalender:
email
id 5
nickname
status offline
admin:
email
id 6
nickname J�rg
status offline
plex:
email
id 4
nickname
status offline
OLDREADINGS:
READINGS:
2020-11-28 12:03:12 Error none
2020-11-28 12:03:12 Errorcode none
2020-11-29 05:35:37 QueueLength 9
2020-11-20 15:21:00 recActions
2020-11-20 15:21:00 recActionsValue
2020-11-20 15:21:00 recCallbackId
2020-11-20 15:21:00 recChannelId
2020-11-20 15:21:00 recChannelname
2020-11-20 15:21:00 recCommand
2020-11-20 15:21:00 recPostId 25769803797
2020-11-20 15:21:00 recText set SSCam. Home snap
2020-11-20 15:21:00 recTimestamp 2020-11-20 15:20:59
2020-11-20 15:21:00 recTriggerword
2020-11-20 15:21:00 recUserId 6
2020-11-20 15:21:00 recUsername admin
2020-11-20 15:21:00 sendCommandReturn
2020-11-29 05:35:37 sendPostId 25769803974
2020-11-29 05:35:37 sendUserId 6
2020-11-29 05:35:37 state active
Attributes:
defaultPeer admin
room Chat
Zitat von: DS_Starter am 29 November 2020, 08:45:25
Du verwendest zum Versand die in SSCam integrierte Methode oder ?
:-\ Bisher reichte ein
set SSCam.Home snap 3 3
und es kamen 3 Bilder bei telegram an.
Schönen ersten Advent.
LG Jörg
Hallo Jörg,
Zitat:-\ Bisher reichte ein ...
Jepp, ist bei Chat genauso.
Ich schaue mir gerade deine lists an und sehe momentan noch nichts falsches.
Hast du eventuell noch eine andere Kamera mit einem anderen Namen als Home ?
Dir auch einen schönen Advent !
LG,
Heiko
Du könntest es auch mal manuell im Chatdevice testen mit:
set SynChatBot asyncSendItem text="Kameratest" fileUrl="http://192.168.123.62:8081/surveillance/@Snapshot/Home-20201128-1033555519.jpg"
Bei mir habe ich es getestet und die fileUrl wird korrekt übernommen. Der Versand klappt natürlich nicht da es das Objekt nicht gibt, aber der resultierende Ausbau in der sendQueue stimmt:
7 => userid=>4, text=>Kameratest, retryCount=>1, opmode=>sendItem, method=>chatbot, forbidSend=>illegal file name or path, fileUrl=>http://192.168.123.62:8081/surveillance/@Snapshot/Home-20201128-1033555519.jpg, channel=>, attachment=>
LG
set SynChatBot asyncSendItem text="Kameratest" fileUrl="http://192.168.123.62:8081/surveillance/@Snapshot/Home-20201128-1033555519.jpg"
:) funktioniert.
Zitat von: DS_Starter am 29 November 2020, 12:31:59
Hast du eventuell noch eine andere Kamera mit einem anderen Namen als Home ?
Ich habe nur eine Kamera.
Zitat:) funktioniert.
Also funktioniert es erstmal grundsätzlich. :)
Frage ist jetzt wieso nicht direkt aus SSCam heraus.
Im Cam Device mal verbose 4 setzen und nach dem snap den Logauszug posten der so aussieht wie unten.
2020.11.29 16:59:39.500 4: SSCam.Terrasse - ####################################################
2020.11.29 16:59:39.500 4: SSCam.Terrasse - ### start send Snap or Video by SSChatBot
2020.11.29 16:59:39.501 4: SSCam.Terrasse - ####################################################
2020.11.29 16:59:39.501 4: SSCam.Terrasse - param chatbot is set to "SynChatBot"
2020.11.29 16:59:39.502 4: SSCam.Terrasse - param videofolderMap is set to "http://sds1.myds.me:8081/surveillance"
2020.11.29 16:59:39.502 4: SSCam.Terrasse - param tac is set to "1334"
2020.11.29 16:59:39.502 4: SSCam.Terrasse - param peers is set to ""
2020.11.29 16:59:39.503 4: SSCam.Terrasse - param sdat is set
2020.11.29 16:59:39.503 4: SSCam.Terrasse - param subject is set to "Bewegungsalarm bei Terrasse. Es wurde $CTIME der Schnappschuss $FILE erstellt"
2020.11.29 16:59:39.504 4: SSCam.Terrasse - param opmode is set to "getsnapgallery"
2020.11.29 16:59:39.504 4: SSCam.Terrasse - Cache "redis" is already initialized
2020.11.29 16:59:39.506 4: SSCam.Terrasse - Cache "redis" is already initialized
2020.11.29 16:59:39.510 3: SSCam.Terrasse - Chat message [0] of transaction "1334" for "Heiko" added to "SynChatBot" sendqueue
2020.11.29 16:59:39.529 4: SSCam.Terrasse - SMTP-Credentials read from RAM: ++++++
2020.11.29 16:59:39.544 4: SSCam.Terrasse - Cache "redis" is already initialized
2020.11.29 16:59:39.558 4: SSCam.Terrasse - Image data sequence [0] decoded from CHI-Cache for Email attachment
2020.11.29 16:59:39.592 3: SSCam.Terrasse - SMTP-Host 192.168.2.10 switched to encrypted connection with SSL version: TLSv1_2
2020.11.29 16:59:40.517 4: SSCam.Terrasse - Cache key "{SENDSNAPS}{1334}{0}{createdTm}" removed
2020.11.29 16:59:40.519 4: SSCam.Terrasse - Cache key "{SENDSNAPS}{1334}{0}{snapid}" removed
2020.11.29 16:59:40.522 4: SSCam.Terrasse - Cache key "{SENDSNAPS}{1334}{0}{imageData}" removed
2020.11.29 16:59:40.524 4: SSCam.Terrasse - Cache key "{SENDSNAPS}{1334}{0}{fileName}" removed
Besser ist es auch noch das Chat device auf verbose 5 zu setzen und dann einen Snap auslösen.
Dann sieht man es schön komplett:
2020.11.29 17:13:06.983 4: SSCam.Terrasse - ####################################################
2020.11.29 17:13:06.983 4: SSCam.Terrasse - ### start send Snap or Video by SSChatBot
2020.11.29 17:13:06.984 4: SSCam.Terrasse - ####################################################
2020.11.29 17:13:06.984 4: SSCam.Terrasse - param videofolderMap is set to "http://sds1.myds.me:8081/surveillance"
2020.11.29 17:13:06.985 4: SSCam.Terrasse - param chatbot is set to "SynChatBot"
2020.11.29 17:13:06.985 4: SSCam.Terrasse - param tac is set to "2751"
2020.11.29 17:13:06.985 4: SSCam.Terrasse - param peers is set to ""
2020.11.29 17:13:06.986 4: SSCam.Terrasse - param opmode is set to "getsnapgallery"
2020.11.29 17:13:06.986 4: SSCam.Terrasse - param subject is set to "Bewegungsalarm bei Terrasse. Es wurde $CTIME der Schnappschuss $FILE erstellt"
2020.11.29 17:13:06.986 4: SSCam.Terrasse - param sdat is set
2020.11.29 17:13:06.987 4: SSCam.Terrasse - Cache "redis" is already initialized
2020.11.29 17:13:06.989 4: SSCam.Terrasse - Cache "redis" is already initialized
2020.11.29 17:13:06.993 5: SynChatBot - Add Item to queue - Index 10:
{
'attachment' => '',
'method' => 'chatbot',
'text' => 'Bewegungsalarm bei Terrasse. Es wurde 29.11.2020 / 17:13:06 der Schnappschuss Terrasse-20201129-1713061395.jpg erstellt',
'opmode' => 'sendItem',
'fileUrl' => 'http://sds1.myds.me:8081/surveillance/@Snapshot/Terrasse-20201129-1713061395.jpg',
'userid' => 4,
'channel' => '',
'retryCount' => 0
}
2020.11.29 17:13:06.993 3: SSCam.Terrasse - Chat message [0] of transaction "2751" for "Heiko" added to "SynChatBot" sendqueue
2020.11.29 17:13:06.994 4: SynChatBot - ####################################################
2020.11.29 17:13:06.994 4: SynChatBot - ### start Chat operation sendItem
2020.11.29 17:13:06.995 4: SynChatBot - ####################################################
2020.11.29 17:13:06.995 4: SynChatBot - API hashvalues already set - ignore get apisites
2020.11.29 17:13:06.996 4: SynChatBot - botToken read from RAM: ********
2020.11.29 17:13:06.996 4: SynChatBot - start SendQueue entry index "10" (sendItem) for operation.
2020.11.29 17:13:06.996 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2020.11.29 17:13:06.997 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Bewegungsalarm bei Terrasse. Es wurde 29.11.2020 / 17:13:06 der Schnappschuss Terrasse-20201129-1713061395.jpg erstellt","file_url": "http://sds1.myds.me:8081/surveillance/@Snapshot/Terrasse-20201129-1713061395.jpg","user_ids": [4]}
2020.11.29 17:13:07.014 4: SSCam.Terrasse - SMTP-Credentials read from RAM: +++++
2020.11.29 17:13:07.030 4: SSCam.Terrasse - Cache "redis" is already initialized
2020.11.29 17:13:07.389 4: SSCam.Terrasse - Image data sequence [0] decoded from CHI-Cache for Email attachment
2020.11.29 17:13:08.002 4: SSCam.Terrasse - Cache key "{SENDSNAPS}{2751}{0}{snapid}" removed
2020.11.29 17:13:08.004 4: SSCam.Terrasse - Cache key "{SENDSNAPS}{2751}{0}{createdTm}" removed
2020.11.29 17:13:08.006 4: SSCam.Terrasse - Cache key "{SENDSNAPS}{2751}{0}{fileName}" removed
2020.11.29 17:13:08.008 4: SSCam.Terrasse - Cache key "{SENDSNAPS}{2751}{0}{imageData}" removed
Auszug log
2020.11.29 17:25:26 4: SSCam.Home - ####################################################
2020.11.29 17:25:26 4: SSCam.Home - ### start send Snap or Video by SSChatBot
2020.11.29 17:25:26 4: SSCam.Home - ####################################################
2020.11.29 17:25:26 4: SSCam.Home - param peers is set to ""
2020.11.29 17:25:26 4: SSCam.Home - param subject is set to "Bewegungsalarm bei Home. Es wurde $CTIME der Schnappschuss $FILE erstellt"
2020.11.29 17:25:26 4: SSCam.Home - param chatbot is set to "SynChatBot"
2020.11.29 17:25:26 4: SSCam.Home - param tac is set to "240"
2020.11.29 17:25:26 4: SSCam.Home - param opmode is set to "getsnapgallery"
2020.11.29 17:25:26 4: SSCam.Home - param sdat is set
2020.11.29 17:25:26 4: SSCam.Home - param videofolderMap is set to "http://192.168.123.62:8081/surveillance"
2020.11.29 17:25:26 4: SSCam.Home - internal Cache mechanism is used
2020.11.29 17:25:26 4: SSCam.Home - internal Cache mechanism is used
2020.11.29 17:25:26 5: SynChatBot - Add Item to queue - Index 35:
$VAR1 = {
'attachment' => '',
'fileUrl' => 'http://192.168.123.62:8081/surveillance/@Snapshot/',
'userid' => 6,
'channel' => '',
'opmode' => 'sendItem',
'retryCount' => 0,
'text' => 'Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt',
'method' => 'chatbot'
};
2020.11.29 17:25:26 3: SSCam.Home - Chat message [0] of transaction "240" for "admin" added to "SynChatBot" sendqueue
2020.11.29 17:25:26 4: SynChatBot - ####################################################
2020.11.29 17:25:26 4: SynChatBot - ### start Chat operation sendItem
2020.11.29 17:25:26 4: SynChatBot - ####################################################
2020.11.29 17:25:26 4: SynChatBot - API hashvalues already set - ignore get apisites
2020.11.29 17:25:26 4: SynChatBot - botToken read from RAM: ********
2020.11.29 17:25:26 4: SynChatBot - start SendQueue entry index "35" (sendItem) for operation.
2020.11.29 17:25:26 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2020.11.29 17:25:26 4: SynChatBot - Call-Out: http://192.168.123.62:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Bewegungsalarm bei%20Home. Es wurde der Schnappschuss erstellt","file_url": "http://192.168.123.62:8081/surveillance/@Snapshot/","user_ids": [6]}
2020.11.29 17:25:26 5: SynChatBot - JSON returned: $VAR1 = {
'success' => bless( do{\(my $o = 0)}, 'JSON::XS::Boolean' ),
'error' => {
'code' => 117
}
};
2020.11.29 17:25:26 2: SynChatBot - ERROR - Operation sendItem was not successful. Errorcode: 117 - illegal file name or path
2020.11.29 17:25:26 2: SynChatBot - ERROR - "sendItem" SendQueue index "35" not executed. It seems to be a permanent error. Exclude it from new send attempt !
2020.11.29 17:25:26 4: SynChatBot - ####################################################
2020.11.29 17:25:26 4: SynChatBot - ### start Chat operation
2020.11.29 17:25:26 4: SynChatBot - ####################################################
2020.11.29 17:25:26 4: SynChatBot - Only entries with "forbidSend" are in Sendqueue. Escaping ...
Jetzt kennen wir den Grund. Der Filename wird bei dir nicht übergeben.
$VAR1 = {
'attachment' => '',
'fileUrl' => 'http://192.168.123.62:8081/surveillance/@Snapshot/',
Fehlt nur noch die Ursache.
Bei Telegram funktionierts wie du sagst ?
ja, da funktoniert es.
das steht bei telegram im log (falls das hilft)
2020.11.29 17:25:26 4: SSCam.Home - ####################################################
2020.11.29 17:25:26 4: SSCam.Home - ### start send Snap or Video by TelegramBot
2020.11.29 17:25:26 4: SSCam.Home - ####################################################
2020.11.29 17:25:26 4: SSCam.Home - param telebot is set to "FHEMstatus"
2020.11.29 17:25:26 4: SSCam.Home - param MediaStream is set to "-1"
2020.11.29 17:25:26 4: SSCam.Home - param peers is set to ""
2020.11.29 17:25:26 4: SSCam.Home - param part1txt is set to ""
2020.11.29 17:25:26 4: SSCam.Home - param subject is set to "Bewegungsalarm bei Home. Es wurde $CTIME ein Schnappschuss erstellt"
2020.11.29 17:25:26 4: SSCam.Home - param fname is set to ""
2020.11.29 17:25:26 4: SSCam.Home - param tac is set to "240"
2020.11.29 17:25:26 4: SSCam.Home - param opmode is set to "getsnapgallery"
2020.11.29 17:25:26 4: SSCam.Home - param image is set to ""
2020.11.29 17:25:26 4: SSCam.Home - param sdat is set
2020.11.29 17:25:26 4: SSCam.Home - param part1type is set to "text/plain; charset=UTF-8"
2020.11.29 17:25:26 4: SSCam.Home - param lsnaptime is set to ""
2020.11.29 17:25:26 4: SSCam.Home - param part2type is set to "image/jpeg"
2020.11.29 17:25:26 4: SSCam.Home - internal Cache mechanism is used
2020.11.29 17:25:26 4: SSCam.Home - internal Cache mechanism is used
2020.11.29 17:25:26 4: SSCam.Home - Image data sequence [0] decoded from internal Cache for TelegramBot prepare
2020.11.29 17:25:26 4: SSCam.Home - __TBotSendIt: Filename for image file :<stream:66049>:
2020.11.29 17:25:26 4: SSCam.Home - __TBotSendIt: timeout for sent :30:
2020.11.29 17:25:26 3: SSCam.Home - Telegram message [0] of transaction "240" sent to "JXXX_RXXX" by "FHEMstatus"
Jetzt konnte ich das Problem nachstellen. Es ist ein Problem in SSCam der nur zu Tage tritt wenn das Attribut cacheType nicht gesetzt ist.
Setze dir bitte mal das Attribut (in SSCam.Home)
cacheType = file
Und teste wieder den snap.
... ich glaub, das dauert jetzt etwas.
beim setzen des Attributes kommt:
"Perl cache module CHI is missing. You need to install it with the FHEM Installer for example."
Da muss ich mich erst mal mit beschäftigen. Das hatte ich schon mal geladen. Dies hat aber nie funktioniert, da "1 E404 Not Found - cpanm is not installed". Das habe ich aber als "Anwender" nicht verstanden.
Da ein
set FHEM Installer Status installPerl App::cpanminus
leider nicht funktioniert.
state error 'installPerl App::cpanminus'
.. hab ich es dann einfach gelassen.
Kein Problem, ich habe inzwischen herausbekommen dass du einfach nur das Attribut snapTelegramTxt löschen musst.
Das ist ein Fehler in SSCam dass sich die Versandattribute gegenseitig beeinflussen.
Haus mal raus und dann wieder snap. ;)
:) :) :)
Es funktioniert. Spitze.
Da hab ich jetzt alles von telegram zu SSChat gebracht. DANKE.
:D
Ich muß jetzt das Problem im SSCam fixen. Darf nicht sein dass sich diese Attribute gegenseitig beeinflussen. Kommt sicherlich nicht so häufig vor, aber trotzdem ...
Wegen dem Installer bzw. cpanminus.....
Ich habe in meinem Wiki mal nachgeschaut. Sollte so installierbar sein:
curl -L https://cpanmin.us | perl - --sudo App::cpanminus
Den FHEM Installer nehme ich nur noch um irgendwelche Perl Module nachzuinstallieren oder zu updaten. Außerdem kann man das System prüfen ob alle nötigen Perl Module installiert sind usw.
Wie immer DANKESCHÖN.
Ist zwar ein bisschen OT, aber weil es aktuell um ein Bugfix in SSCam ging die kurze Info dass ich den Fehler beseitigen konnte. Neue Version von SSCam ist morgen früh im Update enthalten welches das oben erlebte Problem beseitigt.
Grüße,
Heiko
Hallo Heiko,
ich bin erst vor kurzem für Nachrichten aus FHEM heraus auf dein Modul umgestiegen. Das funktioniert auch sehr gut. Danke an dich für das Modul.
Beim Neustart von FHEM habe ich allerdings diese beiden Fehlermeldungen im Log:
2020.12.09 13:59:50 2: SynChatBot - ERROR message: read from http://192.168.2.168:20000 timed out
2020.12.09 13:59:50 2: SynChatBot - ERROR - "chatUserlist" SendQueue index "1" not executed. Restart SendQueue in 5 s (retryCount 1).
Wie lässt sich das abstellen?
Grüße
Stefan
Hallo Stefan,
manchmal reagiert die Synology nicht so schnell auf Anfragen (gerade beim Start von FHEM wenn evtl. noch mehr Anfragen an die Syno gestellt werden) und dadurch kommt es zu dieser Meldung. Prinzipiell nicht schlimm, denn die Anmeldung wird ja wiederholt wie es im Log steht.
Aber es gibt noch das Attribut "httptimeout" welches du im Device setzen kannst, z.B. auf 60.
Damit läufst du dann nicht in den timeout. Musst du mal probieren was ein guter Wert für deine Umgebung wäre.
LG,
Heiko
Hallo,
aktuell habe ich ein Problem mit der Einbindung des Chat Bots. Ich habe alles nach Anleitung in der Wiki vorgenommen, bekomme aber nach der EIngabe des Tokens die folgende Fehlermeldung:
Message not found for error code: 105 New error: autoblock
Mit dem Error Code 105
Eine Peer Liste kann ich auch nicht laden, da steht dann "--wait for userlist--
Kann mir evtl. jemand sagen wo der Fehler liegen könnte?
Gruß, Thomas
Edit: Hab das Problem gefunden. Die Autoblockierung der IP Adresse hatte auf der Synology NAS zugeschlagen.
Nach Anpassen der zugelassenen IP Range läuft alles wieder.
Hallo Thomas,
gerade wollte ich antworten. :)
Interessant dass die Autoblockierung auch mit dem Code 105 zurückkommt, normalerweise wäre es der Code für "The logged in session does not have permission."
Grüße,
Heiko
Hallo guten Morgen,
am Wochenende habe ich meine FHEM Installation (Docker) auf meine Synology umgezogen. Seit dieser Zeit verbindet sich mein SSChat Device nicht mehr mit dem Synology Chat Server.
Als Fehlermeldung kommt:
connect to https://192.168.178.33:5001 timed out
Hat evtl. jemand eine Idee was die Ursache dafür ist?
Vielen Dank!
Guten Morgen,
Hast du für fhem im docker ein Portmapping eingerichtet ?
Wenn ja, prüfe mal bitte die integration des bots im syno chatserver. Es sind die ersten Schritte wie im Wiki beschrieben.
Der chatserver muss die angelegte fhemweb instanz erreichen können.
Lg,
Heiko
Hallo Heiko
aus meiner Sicht habe ich die richtigen Portweiterleitungen eingerichtet (8082).
Ich versuche mal das Device komplett zu löschen und neu anzulegen, evtl. liegt ja da der Hund begraben. ;-)
Gruß, Thomas
Hallo Heiko,
aktuell scheinen die Formatierungen
Formatieren einer Nachricht:
Die folgenden Markdown-Codes werden vom Chat unterstützt:
Inhalte betonen:
Stellen Sie Ihren Text zwischen *Sternchen*, um Fettdruck zu erzeugen, oder _Unterstrichen_ für Kursivtext.
Durchstreichen:
Stellen Sie Ihren Text zwischen ~Tilden~.
Eine Liste erstellen:
Fügen Sie vor jedem Element der Liste ein Sternchen * gefolgt von einem Leerzeichen ein. Fügen Sie der Liste mit der Tastenkombination Umschalttaste + Eingabetaste neue Zeilen bzw. Elemente hinzu.
Einzug oder Blockzitat hinzufügen:
Fügen Sie dem Beginn einer Nachricht spitze Klammern hinzu. Beispiel:
> Fügen Sie eine spitze Klammer hinzu, um die erste Zeile der Nachricht einzurücken.
>>> Fügen Sie drei spitze Klammern hinzu, um mehrere Zeilen einzurücken und die Nachricht als längeres Zitat anzuzeigen.
nicht zu funktionieren.
gelesen unter: https://kb.synology.com/de-de/DSM/help/Chat/chat_enriching_your_chat?version=6
Muss ich da noch etwas beachten oder einstellen?
LG
ZitatMuss ich da noch etwas beachten oder einstellen?
Ich habe das mal getestet. Die Formatierung von Durchstreichung und Kursivtext sowie Einrückung funktioniert einwandfrei wie in der Hilfe angegeben. Auch die Liste klappt wenn man im Modul es so angibt:
set ... asyncSendItem
* Element1 \n
* Element2 \n
* Element3 \n
Ebenso die Fettschrift mit:
set ... asyncSendItem Text mit *sternchen*
Gesendet habe ich mit dem SSChatbot Device. Der Screenshot sind vom Client auf meinem PC.
Auf dem Chat Client auf meinem Handy wird die Formatierung aber nicht realisiert. Ich denke Synology muß ein Update des Mobilclients herausbringen. Denke ich schreibe mal an Syno. Kannst du natürlich auch machen.
LG,
Heiko
Danke für die Rückmeldung.
Gesendet habe ich mit dem SSChatbot Device.
... hab ich auch gemacht.
Auf dem Chat Client auf ... Handy wird die Formatierung aber nicht realisiert.
... und nur da hab ich geschaut. ::)
Client auf ... PC
Habs gerade getestet. Funktioniert. Da schau ich aber nie. :)
Denke ich schreibe mal an Syno. Kannst du natürlich auch machen.
Das versuch ich mal. Werde den Support anschreiben.
Habe gerade auch mal in die Online-Hilfe direkt auf dem Chat Client auf dem Handy geschaut (Einstellungen -> Hilfe). Dort wird nicht beschrieben dass man die besagten Formatierungen benutzen könnte. Das zeigt für mich in die gleiche Richtung -> Update Chat App
Der Syno Support hat mir schon auf meine Anfrage geantwortet:
Zitat
...
Leider wurden die Formatierungen in der Mobilen App noch nicht implementiert. Ich habe dies als Funktionswunsch an unsere Entwicklung weitergeleitet.
...
VG
Zitat von: ThomasMagnum am 17 November 2021, 09:18:36
aus meiner Sicht habe ich die richtigen Portweiterleitungen eingerichtet (8082).
Ich versuche mal das Device komplett zu löschen und neu anzulegen, evtl. liegt ja da der Hund begraben. ;-)
Leider komme ich hier nicht weiter.
Egal ob die DSM Firewall an ist oder nicht, das Chat Device funktioniert nicht.
Der angelegte FHEMWEB Port wird auch durchgeleitet.
Hat noch einer eine Idee?
Hallo Thomas,
stelle mal bitte verbose 5 im Device ein und restarte dann FHEM.
Wenn alles klappt, würde eine solche Ausgabe kommen:
2021.11.22 17:51:51.629 5: SynChatBot - Add Item to queue - Index 1:
{
'fileUrl' => '',
'userid' => '',
'text' => '',
'opmode' => 'chatUserlist',
'retryCount' => 0,
'method' => 'user_list',
'channel' => '',
'attachment' => ''
}
2021.11.22 17:51:51.630 4: SynChatBot - ####################################################
2021.11.22 17:51:51.631 4: SynChatBot - ### start Chat operation chatUserlist
2021.11.22 17:51:51.631 4: SynChatBot - ####################################################
2021.11.22 17:51:51.632 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2021.11.22 17:51:51.632 4: SynChatBot - API imported:
{
'EXTERNAL' => {
'NAME' => 'SYNO.Chat.External'
},
'INFO' => {
'PATH' => 'query.cgi',
'NAME' => 'SYNO.API.Info',
'VER' => 1
}
}
2021.11.22 17:51:51.633 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.Chat.External,SYNO.API.Info
2021.11.22 17:51:51.634 3: SynChatBot - SSChatBot "SynChatBot" for URL /outchat registered
2021.11.22 17:52:01.465 5: SynChatBot - JSON returned: {
'data' => {
'SYNO.Chat.External' => {
'maxVersion' => 2,
'path' => 'entry.cgi',
'minVersion' => 1,
'requestFormat' => 'JSON'
},
'SYNO.API.Info' => {
'path' => 'query.cgi',
'minVersion' => 1,
'maxVersion' => 1
}
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
2021.11.22 17:52:01.483 4: SynChatBot - API completed:
{
'EXTERNAL' => {
'VER' => 2,
'MOD' => 'no',
'NAME' => 'SYNO.Chat.External',
'PATH' => 'entry.cgi'
},
'INFO' => {
'NAME' => 'SYNO.API.Info',
'MOD' => 'no',
'VER' => 1,
'PATH' => 'query.cgi'
},
'PARSET' => 1
}
2021.11.22 17:52:01.484 4: SynChatBot - botToken read from RAM: ********
2021.11.22 17:52:01.485 4: SynChatBot - start SendQueue entry index "1" (chatUserlist) for operation.
2021.11.22 17:52:01.485 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2021.11.22 17:52:01.485 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=user_list&token="<secret>"
2021.11.22 17:52:02.445 5: SynChatBot - JSON returned: {
'data' => {
'users' => [
{
'is_disabled' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'user_props' => {
....
Bei dir wird es wahrscheinlich an einer Stelle den Fehler geben.
Bitte poste dann den komplette Logausschnitt bis zu dem Fehler.
Grüße,
Heiko
Hallo,
ich weiß ich bin nicht zu 100% richtig hier aber vielleicht hat ja der ein oder andere eine Idee wie ich weiterkomme.
Mir ist aufgefallen, dass vor ein paar Tagen der Chatbot immer wieder mal auf Error ging und Nachrichten die von FHEM heraus an den Chatbot gingen gefühlt länger brauchen las vorher.
Nachdem ich in diesem Thread gelesen habe, dass die Synology manchmal etwas länger braucht um die Anfragen zu verarbeiten habe ich httptimeout auf 45 sekunden gestellt habe. Damit konnte ich erstmal das "Error" Problem beheben.
Jetzt ist dauern die anfragen an Synology immer noch ca 30-45 sekunden. Vorher war das innerhalb 5 sekunden da.
Ich habe, außer FHEM upzudaten, nichts an meiner Netzwerk/Synology Konfiguration geändert.
Antwort von Synology dauert ebenfalls solange wenn ich den request über einen Internet Browser sende, sowie über "wget ..." direkt von der Synology ausführe.
Nach einem Neustart funktioniert es "schneller" und irgendwann dann wieder die 30-40 Sekunden.
Habt ihr für mich ein paar Tipps wie ich dem Übeltäter auf die spur kommen kann ?
Kann ich auf der Synology den Request irgendwie verfolgen ?
Ich habe erfolglos probiert:
Home Assisant und Ubuntu Server auf der Synology als VM auf Synology deaktiviert.
Alle Portfreigaben zur Synology deaktiviert
FHEM neustart
Hier mal der Log nach dem absenden einer Nachricht:
Log nach absenden der Nachricht "test":
2021.11.26 13:39:47 5: OctoPrintChatBot - Add Item to queue - Index 7:
$VAR1 = {
'attachment' => '',
'channel' => '',
'opmode' => 'sendItem',
'userid' => 4,
'retryCount' => 0,
'method' => 'chatbot',
'text' => 'test',
'fileUrl' => ''
};
2021.11.26 13:39:47 4: OctoPrintChatBot - ####################################################
2021.11.26 13:39:47 4: OctoPrintChatBot - ### start Chat operation sendItem
2021.11.26 13:39:47 4: OctoPrintChatBot - ####################################################
2021.11.26 13:39:47 4: OctoPrintChatBot - API hashvalues already set - ignore get apisites
2021.11.26 13:39:47 4: OctoPrintChatBot - botToken read from RAM: ********
2021.11.26 13:39:47 4: OctoPrintChatBot - start SendQueue entry index "7" (sendItem) for operation.
2021.11.26 13:39:47 5: OctoPrintChatBot - HTTP-Call will be done with httptimeout: 45 s
2021.11.26 13:39:47 4: OctoPrintChatBot - Call-Out: http://192.168.186.51:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "test","user_ids": [4]}
2021.11.26 13:40:17 5: OctoPrintChatBot - JSON returned: $VAR1 = {
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'data' => {
'succ' => {
'user_id_post_map' => {
'4' => '42949673192'
}
},
'fail' => undef
}
};
2021.11.26 13:40:17 4: OctoPrintChatBot - Opmode "sendItem" finished successfully, Sendqueue index "7" deleted.
Hallo Wiesel,
du schreibst:
ZitatJetzt ist dauern die anfragen an Synology immer noch ca 30-45 sekunden. Vorher war das innerhalb 5 sekunden da.
Ich glaube aber du meinst nicht die Anfragen sondern dass die
Antwort der Synology solange dauert, was dann zu einem timeout führte.
Ich kann dir momentan nicht sagen wie man auf der Syno die Performance von Webrequests verfolgen kann, evtl. könnte der Syno Support helfen.
Aber wie reagiert deine Syno generell ? Also z.B. wenn du dich beim DSM anmeldest. Dannn könntest du mal die CPU-Belastung prüfen (top auf Linux) oder das Swap-Verhalten. Das sieht man im DSM im Ressourcenmonitor.
Ich tippe jetzt ganz stark darauf dass dein Synology Hauptspeicher nach einer gewissen Zeit aufgebraucht ist und deshalb der Speicher auf die Platte ausgelagert wird was zum Swap führt. Das dauert sehr lange und führt dann zu solchem Verhalten.
Hier noch zum Vergleich ein Protokoll bei mir:
2021.11.27 22:52:23.161 5: SynChatBot - Add Item to queue - Index 85:
{
'attachment' => '',
'opmode' => 'sendItem',
'userid' => 4,
'method' => 'chatbot',
'text' => 'test',
'fileUrl' => '',
'channel' => '',
'retryCount' => 0
}
2021.11.27 22:52:23.162 4: SynChatBot - ####################################################
2021.11.27 22:52:23.162 4: SynChatBot - ### start Chat operation sendItem
2021.11.27 22:52:23.162 4: SynChatBot - ####################################################
2021.11.27 22:52:23.163 4: SynChatBot - API hashvalues already set - ignore get apisites
2021.11.27 22:52:23.163 4: SynChatBot - botToken read from RAM: ********
2021.11.27 22:52:23.164 4: SynChatBot - start SendQueue entry index "85" (sendItem) for operation.
2021.11.27 22:52:23.164 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2021.11.27 22:52:23.165 4: SynChatBot - Call-Out: http://192.168.2.10:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "test","user_ids": [4]}
2021.11.27 22:52:23.351 5: SynChatBot - JSON returned: {
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'data' => {
'succ' => {
'user_id_post_map' => {
'4' => '68719495441'
}
},
'fail' => undef
}
}
2021.11.27 22:52:23.359 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "85" deleted.
Die Antwort kommt innerhalb von ca. 200 Millisekunden.
LG,
Heiko
Hallo Heiko,
Ja die Antwort meine ich natürlich.
Das DS-Verhalten würde ich sonst als normal bezeichnen. Drive, Mail Plus, Surveillance, VM's, Chat (app/browser) laufen ohne Verzögerung.
Eine Antwort zu dem httprequest wie http://192.168.186.51:5000/webapi/entry.cgi?api=SYNO.API.Info&version=1&method=query&query=SYNO.API.Auth,SYNO.Chat.External
bekomme ich innerhalb von Millisekunden
sobald ich jedoch spezifische requests an einen Bot sende (mit token) dauern die Anworten wieder lange.
Also CPU last und RAM Auslastung sollten kein Problem sein. Siehe Anhang für Details.
Hab noch ~3GB freier RAM und swap ist so gut wie nicht benutzt. Wenn ich ein httprequest stelle ist auch kein Ausschlag im Swap Ressourcen-Monitor.
Die lange Antwortzeit ist jetzt auch direkt nach einem Neustart der Synology ... hmmmpf.
Habe mal ein Support Ticket bei Synology erstellt.
Werde als nächstes mal Synology Chat neu installieren.
Update folgt.
Update 1:
Neuinstallation des Chat Servers hat nicht zum Erfolg geführt.
LG
Tobias
Hallo Tobias,
ja dann war meine Vermutung eher der Holzweg.
Du könntest noch testen wie das Zeitverhalten ist wenn du mit der Chatapplikation eine Message an FHEM sendest.
Vorher stellst du verbose 5 bei dem Web-Device ein welches mit installiert wurde (default ist WEBSSChatBot).
Du siehst dann so etwas im Log und kannst die Zeiten abschätzen die von der Syno zu FHEM benötigt werden wenn eine Message gesendet wird.
2021.11.28 22:15:06.632 4: Connection accepted from WEBSSChatBot_192.168.2.10_40398
2021.11.28 22:15:06.634 5: POST /sschat/outchat?botname=SynChatBot&fwcsrf=5de4ebe4 HTTP/1.1
Host: fhem.myds.me:8086
User-Agent: SynologyChatBot/1.0
Accept: */*
Content-Length: 161
Content-Type: application/x-www-form-urlencoded
2021.11.28 22:15:06.634 4: WEBSSChatBot_192.168.2.10_40398 POST /sschat/outchat?botname=SynChatBot&fwcsrf=5de4ebe4&token=0kXmkpfoz76zJZ7TtGa1ga2HCDFPI63kD4Prrmr1mNr6MoXGcO1huAGTOjk4Iiqv&user_id=4&username=Heiko&post_id=68719495474&thread_id=0×tamp=1638134106515&text=Test; BUFLEN:0
2021.11.28 22:15:06.643 4: WEBSSChatBot: /sschat/outchat?botname=SynChatBot&fwcsrf=5de4ebe4&token=0kXmkpfoz76zJZ7TtGa1ga2HCDFPI63kD4Prrmr1mNr6MoXGcO1huAGTOjk4Iiqv&user_id=4&username=Heiko&post_id=68719495474&thread_id=0×tamp=1638134106515&text=Test / RL:7 / text/plain; charset=utf-8 / / Cache-Control: no-cache, no-store, must-revalidate
Grüße,
Heiko
Hallo Heiko,
Zeitverhalten ist ähnlich wie bei dir.
2021.11.28 22:25:31.952 4: Connection accepted from WEBSSChatBot_192.168.186.51_38492
2021.11.28 22:25:31.953 5: POST /sschat/outchat?botname=SSChatBot&fwcsrf=5ff8469c HTTP/1.1
Host: 192.168.186.59:8082
User-Agent: SynologyChatBot/1.0
Accept: */*
Content-Length: 163
Content-Type: application/x-www-form-urlencoded
2021.11.28 22:25:31.954 4: WEBSSChatBot_192.168.186.51_38492 POST /sschat/outchat?botname=SSChatBot&fwcsrf=5ff8469c&token=sqavgL6ZeUKdl4Tga47PXOCwtaNmsDiw3U9oqCq1tOdyFwY3n2A1R3P9rTCVgenX&user_id=4&username=TobiasE&post_id=21474836490&thread_id=0×tamp=1638134731888&text=test; BUFLEN:0
2021.11.28 22:25:32.011 4: WEBSSChatBot: /sschat/outchat?botname=SSChatBot&fwcsrf=5ff8469c&token=sqavgL6ZeUKdl4Tga47PXOCwtaNmsDiw3U9oqCq1tOdyFwY3n2A1R3P9rTCVgenX&user_id=4&username=TobiasE&post_id=21474836490&thread_id=0×tamp=1638134731888&text=test / RL:7 / text/plain; charset=utf-8 / / Cache-Control: no-cache, no-store, must-revalidate
Grüße
Tobias
Scheint tatsächlich ein Zeitproblem bei der Tokenprüfung zu sein. Mal schauen was der Support sagt.
Hallo,
Support Ticket noch offen, aber war in der Zwischenzeit nicht untätig.
Ich habe mir ein Script geschrieben welches mir die Antwortzeit jede Minute aufzeichnet und dann die Synology gestartet.
Glücklicherweise bin ich um /var/log/ Verzeichnis der Synology auf eine Synochat.log gestoßen.
Die Lange Antwortzeiten treten ab ca 12:16 auf
.
.
.
2021-11-29T12:15:55+01:00 DS918Plus synoscgi_SYNO.Chat.User.Avatar_1_get[10267]: user_avatar_get.hpp:52 (pid:10267, euid:119664) [err: (2)No such file or directory]avatar oripath empty with type!=S, throw exception, user nickname=, type=S
2021-11-29T12:15:55+01:00 DS918Plus synoscgi_SYNO.Chat.User.Avatar_1_get[10267]: Fatal Error: (user_avatar_get.hpp:53)[100] icon orig path is empty
2021-11-29T12:16:02+01:00 DS918Plus synoscgi_SYNO.Chat.External_2_chatbot[10269]: chatapi.cpp:48 (pid:10269, euid:119664) [err: (2)No such file or directory](192.168.186.72)(u:0)(a:0)webapi param={"api":"SYNO.Chat.External","method":"chatbot","payload":{"text":"curl time test","user_ids":[4]},"token":"UMDRznEC0yJ2V4NR7S8QiEd0IsaSWkzAVSdYhTpyLe0CGC5xY1AOdxqaxqV7t7eQ","version":2}
2021-11-29T12:17:32+01:00 DS918Plus synoscgi_SYNO.Chat.External_2_chatbot[10269]: autoblock_file_open.c:66 Open and lock [/tmp/login_fail.list] failed exceeds try count for 13(Permission denied)
2021-11-29T12:17:32+01:00 DS918Plus synoscgi_SYNO.Chat.External_2_chatbot[10269]: chatapi.cpp:48 (pid:10269, euid:119664) [err: (13)Permission denied](192.168.186.72)(u:0)(a:0)webapi param={"api":"SYNO.Chat.External","method":"chatbot","payload":{"text":"curl time test","user_ids":[4]},"token":"UMDRznEC0yJ2V4NR7S8QiEd0IsaSWkzAVSdYhTpyLe0CGC5xY1AOdxqaxqV7t7eQ","version":2}
2021-11-29T12:18:01+01:00 DS918Plus synoscgi_SYNO.Chat.User.Avatar_1_get[10932]: user_avatar_get.hpp:52 (pid:10932, euid:119664) [err: (2)No such file or directory]avatar oripath empty with type!=S, throw exception, user nickname=, type=S
.
.
.
der Übeltäter scheint das "permission denied" zu sein. In der Datei "/tmp/login_fail.list" ist meine öffentliche IP (+ kryptische zeichen) enthalten.
root@DS918Plus:~# cat /tmp/login_fail.list
fפa95.89.xxx.64co|wqפa95.89.xxx.6▒V▒▒05▒▒
Leere ich die Datei werden die Anfragen wieder innerhalb von Millisekunden beantwortet.
Automatische Blockierung + DoS-Schutz in den Synology Einstellungen ist aktiviert. Meine öffentliche IP ist aber nicht in der blockierten Listen enthalten. Erreiche auch alle meine Dienste über meine externe IP.
Weiß jemand eine Idee welcher Dienst getriggert wird damit etwas in die "/tmp/login_fail.list" geschrieben wird ?
Synology Chat ist als App auf zwei Android-Smartphone installiert über die ich mittels dyndns zugreife.
Ansonsten alles nur im lokalen Netzwerk.
EDIT:
Auch wenn die Antwortzeiten im Millisekunden Bereich liegen bekomme ich trotzdem eine ERR: 2 Fehlermeldung im Log.
Kann jemand mal das bei sich überprüfen ?
2021-11-29T15:10:01+01:00 DS918Plus synoscgi_SYNO.Chat.External_2_chatbot[17423]: chatapi.cpp:48 (pid:17423, euid:119664) [err: (2)No such file or directory](192.168.186.72)(u:0)(a:0)webapi param={"api":"SYNO.Chat.External","method":"chatbot","payload":{"text":"curl time test","user_ids":[4]},"token":"UMDRznEC0yJ2V4NR7S8QiEd0IsaSWkzAVSdYhTpyLe0CGC5xY1AOdxqaxqV7t7eQ","version":2}
Grüße
Tobias
Hallo Tobias,
in meiner /var/log/synochat.log stehen nur solche Meldungen:
2021-11-29T07:59:30+01:00 SDS1 synoscgi_SYNO.Chat.User.Avatar_1_get[10586]: user_avatar_get.hpp:52 (pid:10586, euid:119664) [err: (2)No such file or directory]avatar oripath empty with type!=S, throw exception, user nickname=, type=S
2021-11-29T07:59:30+01:00 SDS1 synoscgi_SYNO.Chat.User.Avatar_1_get[10586]: Fatal Error: (user_avatar_get.hpp:53)[100] icon orig path is empty
2021-11-29T10:30:02+01:00 SDS1 synoscgi_SYNO.Chat.Post_4_batch_delete[10600]: post_batch_delete.hpp:43 (pid:10600, euid:119664) [err: (0)]clean post by batch delete config
2021-11-29T10:30:02+01:00 SDS1 synoscgi_SYNO.Chat.Post_4_batch_delete[10600]: post.cpp:491 (pid:10600, euid:119664) [err: (0)]clean post by batch delete config, iDayCount=5
2021-11-29T10:30:02+01:00 SDS1 synoscgi_SYNO.Chat.Post_4_batch_delete[10600]: post.cpp:509 (pid:10600, euid:119664) [err: (0)]clean post before timestamp = 1637746202
2021-11-29T10:30:02+01:00 SDS1 synoscgi_SYNO.Chat.Post_4_batch_delete[10600]: post.cpp:690 (pid:10600, euid:119664) [err: (0)]fork, run unlink files, forkFlag=187
2021-11-29T10:30:02+01:00 SDS1 synoscgi_SYNO.Chat.Post_4_batch_delete[10600]: post.cpp:704 (pid:10600, euid:119664) [err: (0)]watpid pid=4079
2021-11-29T10:30:02+01:00 SDS1 synoscgi_SYNO.Chat.Post_4_batch_delete[4079]: background_job_model.cpp:58 (pid:4079, euid:119664) [err: (0)]create job run ok, job_id=706, pid=4079, job_type=DELETE_POST_TYPE_BATCH, cmd_name=SYNO.Chat.Post_
2021-11-29T10:30:02+01:00 SDS1 synoscgi_SYNO.Chat.Post_4_batch_delete[4079]: background_job_model.cpp:130 (pid:4079, euid:119664) [err: (0)]delete job run ok, job_id list=[ 706 ]
2021-11-29T10:30:02+01:00 SDS1 synoscgi_SYNO.Chat.Post_4_batch_delete[4079]: post.cpp:695 (pid:4079, euid:119664) [err: (0)]process exit
Der einzige Fehler den ich sehe bezieht sich auf SYNO.Chat.User.Avatar.
Eine /tmp/login_fail.list gibt es bei mir überhaupt nicht.
Meine Synology ist übrigens nicht im Internet zu erreichen, sondern auschließlich via VPN.
Also ich habe jetzt mal den Mail Server deinstalliert. War eh nur mehr Spielerei als produktiv genutzt ;D
Portfreigabe für HTTPS vorerst deaktiviert. Einzig VPN Ports bleiben jetzt offen.
Bis jetzt läuft alles einwandfrei. Ich gehe davon aus, dass es mit dem Mail Server zusammengehangen hat.
Vielen Dank für die Unterstützung auch wenn es weniger um das FHEM Modul ging.
Grüße
Tobias
Hallo,
Der Vollständigkeit halber hier die Antwort vom Synology Support
Dear customer,
Thank you for contacting Synology Technical Support.
Your concern is known to our development department and a solution is already being worked on. This will be fixed in the following DSM7.1 version.
When exactly the version will be released, I can not tell you from our side, because we have no insight into the development processes.
You can follow news and changes in our newsletter.
This you can subscribe to via your Synology account.
Sincerely yours
Jason Hartmann
Technical Support Engineer
Grüße Tobias
Danke für die Info Tobias !
Hallo Experten,
kann mir jemand sagen, warum ich immer um 1 Timestamp versetzt die vorletzte Snapshot Aufnahme erhalte, sobald ich diese via notify anfrage?
Im DOIF habe ich mir mit einem "wait" Timer geholfen. Das funktioniert auch aber im Notify welches aus dem Beispiel der Doku stammt, will es nicht laufen.
Vg Denny
Hallo Denny,
du müsstest uns ein paar mehr Angaben zu dem verwendeten notify (nicht DOIF) und dem verwendeten Kameramodul machen.
Gibt da ja verschiedene Möglichkeiten.
D.h. ein List der Devices wäre schon gut. Zur Zeit sind die Infos einfach zu wenig.
Grüße,
Heiko
Hallo Heiko
Sorry... ja woher sollst Du sonst die Infos bekommen.
Mein Fehler...
hier die LIST der beiden CAM welche auch laufen aber bei Verwendung von
immer um 1 Zeitstempel versetzt das vorletzte Bild vom Chat Bot das Bild versendet wird.
1. CAM
Internals:
CAMID 1
CAMNAME Lutec-Light
COMPATIBILITY 8.2.10
CREDENTIALS Set
DEF Lutec-Light 192.168.178.44 5001 https
FUUID 61b1c6ee-f33f-cb6b-1ce5-1f6e33fe626095a5
FVERSION 49_SSCam.pm:v9.10.2-s25176/2021-11-03
MODEL User Define -
NAME SSCam.Lutec_Light
NR 442
OPMODE getStmUrlPath
PROTOCOL https
SERVERADDR 192.168.178.44
SERVERPORT 5001
STATE on
TYPE SSCam
HELPER:
ACTIVE off
CREDENTIALS ]K[{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX>
HLSSTREAM inactive
LOGINRETRIES 0
OLDPTZHOME
OLDVALPOLL 210
OLDVALPOLLNOLOGGING 1
PACKAGE FHEM::SSCam
RECTIME_DEF 15
SID edlbe7TFTG9i8m4hBYttQ0nOEEB2wTIpTRRWl0tfC9Mg6yXGm-enXs8NgVwfVOTYQyGAtkm_juMG3akVlNoTPc
SNAPLIMIT 1
STMKEYMJPEGHTTP http://192.168.178.44:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=1&StmKey="5872ef0cc490710c10a6daed67e6dd69"
STMKEYMXPEGHTTP http://192.168.178.44:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mxpeg&cameraId=1&StmKey="5872ef0cc490710c10a6daed67e6dd69"
STMKEYUNICST rtsp://syno:5872ef0cc490710c10a6daed67e6dd69@192.168.178.44:554/Sms=1.unicast
STMKEYUNICSTOVERHTTP rtsp://192.168.178.44:5000/webman/3rdparty/SurveillanceStation/cgi/rtsp.cgi?Sms=1.unicast&DsId=0&StmKey=5872ef0cc490710c10a6daed67e6dd69
TOTALCNT 160
VERSION 9.10.2
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.23.1
API:
PARSET 1
AUDIOSTM:
MOD no
NAME SYNO.SurveillanceStation.AudioStream
PATH SurveillanceStation/audioStreaming.cgi
VER 2
AUTH:
MOD yes
NAME SYNO.API.Auth
PATH auth.cgi
VER 6
CAM:
MOD no
NAME SYNO.SurveillanceStation.Camera
PATH entry.cgi
VER 9
CAMEVENT:
MOD no
NAME SYNO.SurveillanceStation.Camera.Event
PATH entry.cgi
VER 1
EVENT:
MOD no
NAME SYNO.SurveillanceStation.Event
PATH entry.cgi
VER 5
EXTEVT:
MOD no
NAME SYNO.SurveillanceStation.ExternalEvent
PATH entry.cgi
VER 1
EXTREC:
MOD no
NAME SYNO.SurveillanceStation.ExternalRecording
PATH entry.cgi
VER 3
HMODE:
MOD no
NAME SYNO.SurveillanceStation.HomeMode
PATH entry.cgi
VER 1
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
LOG:
MOD no
NAME SYNO.SurveillanceStation.Log
PATH entry.cgi
VER 3
PRESET:
MOD no
NAME SYNO.SurveillanceStation.PTZ.Preset
PATH entry.cgi
VER 1
PTZ:
MOD no
NAME SYNO.SurveillanceStation.PTZ
PATH entry.cgi
VER 6
REC:
MOD no
NAME SYNO.SurveillanceStation.Recording
PATH entry.cgi
VER 6
SNAPSHOT:
MOD no
NAME SYNO.SurveillanceStation.SnapShot
PATH entry.cgi
VER 1
STM:
MOD no
NAME SYNO.SurveillanceStation.Stream
PATH entry.cgi
VER 1
SVSINFO:
MOD no
NAME SYNO.SurveillanceStation.Info
PATH entry.cgi
VER 8
VIDEOSTM:
MOD no
NAME SYNO.SurveillanceStation.VideoStreaming
PATH entry.cgi
VER 1
VIDEOSTMS:
MOD no
NAME SYNO.SurveillanceStation.VideoStream
PATH SurveillanceStation/videoStreaming.cgi
VER 1
SVSVERSION:
BUILD 6468
MAJOR 8
MINOR 2
SMALL 10
READINGS:
2021-12-12 11:17:55 Availability enabled
2021-12-12 11:17:51 CamEventNum 177
2021-12-12 11:17:55 CamExposureControl Unknown
2021-12-12 11:17:55 CamExposureMode Unknown
2021-12-12 11:17:55 CamIP 192.168.178.59
2021-12-12 11:17:51 CamLastRec 20211212AM/Lutec-Light-20211212-111405-1639304045.mp4
2021-12-12 11:17:51 CamLastRecId 16819
2021-12-12 11:17:51 CamLastRecTime 12.12.2021 / 11:14:05 - 11:17:45
2021-12-12 11:17:55 CamLiveFps
2021-12-12 11:17:55 CamLiveMode Liveview from DS
2021-12-12 11:17:55 CamLiveQuality
2021-12-12 11:17:55 CamLiveResolution 1280x720
2021-12-12 11:17:55 CamLiveStreamNo 1
2021-12-12 11:17:55 CamModel
2021-12-12 11:17:53 CamMotDetSc SVS, sensitivity: 50, threshold: 10
2021-12-12 11:17:55 CamNTPServer
2021-12-12 11:17:55 CamPort 554
2021-12-12 11:17:55 CamPreRecTime 5
2021-12-12 11:17:55 CamRecShare surveillance
2021-12-12 11:17:55 CamRecVolume /volume1
2021-12-12 11:17:50 CamStreamFormat HLS
2021-12-12 11:17:55 CamVendor User Define
2021-12-12 11:17:55 CamVideoFlip true
2021-12-12 11:17:55 CamVideoMirror true
2021-12-12 11:17:55 CamVideoRotate false
2021-12-12 11:17:55 CamVideoType H.264
2021-12-12 11:17:55 CamblPresetSpeed false
2021-12-12 11:17:49 CapAudioOut false
2021-12-12 11:17:49 CapChangeSpeed false
2021-12-12 11:17:55 CapPIR false
2021-12-12 11:17:49 CapPTZAbs false
2021-12-12 11:17:49 CapPTZAutoFocus false
2021-12-12 11:17:49 CapPTZDirections 0
2021-12-12 11:17:49 CapPTZFocus false
2021-12-12 11:17:49 CapPTZHome false
2021-12-12 11:17:49 CapPTZIris false
2021-12-12 11:17:49 CapPTZObjTracking false
2021-12-12 11:17:49 CapPTZPan false
2021-12-12 11:17:49 CapPTZPresetNumber 0
2021-12-12 11:17:49 CapPTZTilt false
2021-12-12 11:17:49 CapPTZZoom false
2021-12-12 11:17:55 DeviceType Camera
2021-12-12 11:17:57 Error none
2021-12-12 11:17:57 Errorcode none
2021-12-12 11:17:50 LastSnapFilename Lutec-Light-20211211-1756160254.jpg
2021-12-12 11:17:50 LastSnapId 393
2021-12-12 11:17:50 LastSnapTime 11.12.2021 / 17:56:15
2021-12-12 11:17:55 LastUpdateTime 12.12.2021 / 11:17:55
2021-12-12 11:17:48 PollState Active - next time: 11:21:18
2021-12-12 11:17:55 Record Start
2021-12-12 11:17:50 SVSlicenseNumber 2
2021-12-12 11:17:50 SVSuserPriv Manager
2021-12-12 11:17:50 SVSversion 8.2.10-6468
2021-12-12 11:17:57 StmKey "5872ef0cc490710c10a6daed67e6dd69"
2021-12-12 11:17:55 UsedSpaceMB 9.880
2021-12-12 11:17:55 VideoFolder http://192.168.178.44:8081/surveillance
2021-12-12 11:17:50 compstate true
2021-12-12 11:17:55 state on
Attributes:
DbLogExclude .*
alias SSCam.Lutec_Light
cacheType internal
devStateIcon .*isable.*:set_off .*nap:li_wht_on
htmlattr width=500 height=325
httptimeout 20
icon it_camera
pollcaminfoall 210
pollnologging 1
room System
session SurveillanceStation
snapGallerySize Full
videofolderMap http://192.168.178.44:8081/surveillance
webCmd on:off:snap:enable:disable:runView:stopView
2. CAM
Internals:
CAMID 2
CAMNAME Reolink520A
COMPATIBILITY 8.2.10
CREDENTIALS Set
DEF Reolink520A 192.168.178.44 5001 https
FUUID 61b1c6ee-f33f-cb6b-09ee-6d35f43709042198
FVERSION 49_SSCam.pm:v9.10.2-s25176/2021-11-03
MODEL Reolink - RLC-520
NAME SSCam.Reolink520A
NR 443
OPMODE getStmUrlPath
PROTOCOL https
SERVERADDR 192.168.178.44
SERVERPORT 5001
STATE on
TYPE SSCam
HELPER:
ACTIVE off
CREDENTIALS ]K[{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX>
HLSSTREAM inactive
LOGINRETRIES 0
OLDPTZHOME
OLDVALPOLL 210
OLDVALPOLLNOLOGGING 1
PACKAGE FHEM::SSCam
RECTIME_DEF 15
SID 5HfxOpsdM6oQEnmjcTNOg78RtNcT6xlIBHtUwA7N9eERakCPIBFd2AQzdqTSOO_C7wC1nsueNRoZ862trBbXhc
SNAPLIMIT 1
STMKEYMJPEGHTTP http://192.168.178.44:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=2&StmKey="7605b644d2935ca75fbd91c856c3d416"
STMKEYMXPEGHTTP http://192.168.178.44:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mxpeg&cameraId=2&StmKey="7605b644d2935ca75fbd91c856c3d416"
STMKEYUNICST rtsp://syno:7605b644d2935ca75fbd91c856c3d416@192.168.178.44:554/Sms=2.unicast
STMKEYUNICSTOVERHTTP rtsp://192.168.178.44:5000/webman/3rdparty/SurveillanceStation/cgi/rtsp.cgi?Sms=2.unicast&DsId=0&StmKey=7605b644d2935ca75fbd91c856c3d416
TOTALCNT 237
VERSION 9.10.2
VERSION_API 1.2.0
VERSION_ErrCodes 1.3.4
VERSION_SMUtils 1.23.1
API:
PARSET 1
AUDIOSTM:
MOD no
NAME SYNO.SurveillanceStation.AudioStream
PATH SurveillanceStation/audioStreaming.cgi
VER 2
AUTH:
MOD yes
NAME SYNO.API.Auth
PATH auth.cgi
VER 6
CAM:
MOD no
NAME SYNO.SurveillanceStation.Camera
PATH entry.cgi
VER 9
CAMEVENT:
MOD no
NAME SYNO.SurveillanceStation.Camera.Event
PATH entry.cgi
VER 1
EVENT:
MOD no
NAME SYNO.SurveillanceStation.Event
PATH entry.cgi
VER 5
EXTEVT:
MOD no
NAME SYNO.SurveillanceStation.ExternalEvent
PATH entry.cgi
VER 1
EXTREC:
MOD no
NAME SYNO.SurveillanceStation.ExternalRecording
PATH entry.cgi
VER 3
HMODE:
MOD no
NAME SYNO.SurveillanceStation.HomeMode
PATH entry.cgi
VER 1
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
LOG:
MOD no
NAME SYNO.SurveillanceStation.Log
PATH entry.cgi
VER 3
PRESET:
MOD no
NAME SYNO.SurveillanceStation.PTZ.Preset
PATH entry.cgi
VER 1
PTZ:
MOD no
NAME SYNO.SurveillanceStation.PTZ
PATH entry.cgi
VER 6
REC:
MOD no
NAME SYNO.SurveillanceStation.Recording
PATH entry.cgi
VER 6
SNAPSHOT:
MOD no
NAME SYNO.SurveillanceStation.SnapShot
PATH entry.cgi
VER 1
STM:
MOD no
NAME SYNO.SurveillanceStation.Stream
PATH entry.cgi
VER 1
SVSINFO:
MOD no
NAME SYNO.SurveillanceStation.Info
PATH entry.cgi
VER 8
VIDEOSTM:
MOD no
NAME SYNO.SurveillanceStation.VideoStreaming
PATH entry.cgi
VER 1
VIDEOSTMS:
MOD no
NAME SYNO.SurveillanceStation.VideoStream
PATH SurveillanceStation/videoStreaming.cgi
VER 1
SVSVERSION:
BUILD 6468
MAJOR 8
MINOR 2
SMALL 10
READINGS:
2021-12-12 11:21:27 Availability enabled
2021-12-12 11:21:27 CamAudioType AAC
2021-12-12 11:21:23 CamEventNum 249
2021-12-12 11:21:27 CamExposureControl Auto
2021-12-12 11:21:27 CamExposureMode Auto
2021-12-12 11:21:27 CamIP 192.168.178.41
2021-12-12 11:21:23 CamLastRec 20211212AM/Reolink520A-20211212-111941-1639304381.mp4
2021-12-12 11:21:23 CamLastRecId 16822
2021-12-12 11:21:23 CamLastRecTime 12.12.2021 / 11:19:41 - 11:21:21
2021-12-12 11:21:27 CamLiveFps 10
2021-12-12 11:21:27 CamLiveMode Liveview from DS
2021-12-12 11:21:27 CamLiveQuality
2021-12-12 11:21:27 CamLiveResolution 640x480
2021-12-12 11:21:27 CamLiveStreamNo 2
2021-12-12 11:21:27 CamModel RLC-520
2021-12-12 11:21:25 CamMotDetSc SVS, sensitivity: 50, threshold: 10
2021-12-12 11:21:27 CamNTPServer Surveillance Station
2021-12-12 11:21:27 CamPort 80
2021-12-12 11:21:27 CamPreRecTime 5
2021-12-12 11:21:27 CamRecShare surveillance
2021-12-12 11:21:27 CamRecVolume /volume1
2021-12-12 11:21:20 CamStreamFormat HLS
2021-12-12 11:21:27 CamVendor Reolink
2021-12-12 11:21:27 CamVideoFlip false
2021-12-12 11:21:27 CamVideoMirror false
2021-12-12 11:21:27 CamVideoRotate false
2021-12-12 11:21:27 CamVideoType H.264
2021-12-12 11:21:27 CamblPresetSpeed false
2021-12-12 11:21:19 CapAudioOut false
2021-12-12 11:21:19 CapChangeSpeed false
2021-12-12 11:21:27 CapPIR false
2021-12-12 11:21:19 CapPTZAbs false
2021-12-12 11:21:19 CapPTZAutoFocus false
2021-12-12 11:21:19 CapPTZDirections 0
2021-12-12 11:21:19 CapPTZFocus false
2021-12-12 11:21:19 CapPTZHome false
2021-12-12 11:21:19 CapPTZIris false
2021-12-12 11:21:19 CapPTZObjTracking false
2021-12-12 11:21:19 CapPTZPan false
2021-12-12 11:21:19 CapPTZPresetNumber 0
2021-12-12 11:21:19 CapPTZTilt false
2021-12-12 11:21:19 CapPTZZoom false
2021-12-12 11:21:27 DeviceType Camera
2021-12-12 11:21:29 Error none
2021-12-12 11:21:29 Errorcode none
2021-12-12 11:21:21 LastSnapFilename Reolink520A-20211211-1808447076.jpg
2021-12-12 11:21:21 LastSnapId 403
2021-12-12 11:21:21 LastSnapTime 11.12.2021 / 18:08:44
2021-12-12 11:21:27 LastUpdateTime 12.12.2021 / 11:21:27
2021-12-12 11:21:18 PollState Active - next time: 11:24:48
2021-12-12 11:21:27 Record Start
2021-12-12 11:21:20 SVSlicenseNumber 2
2021-12-12 11:21:20 SVSuserPriv Manager
2021-12-12 11:21:20 SVSversion 8.2.10-6468
2021-12-12 11:21:29 StmKey "7605b644d2935ca75fbd91c856c3d416"
2021-12-12 11:21:27 UsedSpaceMB 9.969
2021-12-12 11:21:27 VideoFolder http://192.168.178.44:8081/surveillance
2021-12-12 11:21:20 compstate true
2021-12-11 17:59:37 sendChatState Missing at least one required parameter or attribute: subject, chatbot
2021-12-12 11:21:27 state on
Attributes:
DbLogExclude .*
alias SSCam.Reolink520A
cacheType internal
devStateIcon .*isable.*:set_off .*nap:li_wht_on
htmlattr width=500 height=325
httptimeout 20
icon it_camera
pollcaminfoall 210
pollnologging 1
room System
session SurveillanceStation
snapGallerySize Full
verbose 5
videofolderMap http://192.168.178.44:8081/surveillance
webCmd on:off:snap:enable:disable:runView:stopView
und hier noch das NOTIFY:
Internals:
DEF SSCam.Reolink520A:snap set DS918_ChatBot asyncSendItem text="Ein Schnappschuss vom Hof wurde ausgelöst" fileUrl="[SSCam.Reolink520A:VideoFolder]/@Snapshot/[SSCam.Reolink520A:LastSnapFilename]"
FUUID 61b32ca1-f33f-cb6b-e1f1-6d677b69017e3b92
FVERSION 91_notify.pm:0.252310/2021-11-15
NAME get_Reolink520A_pic_ntfy
NOTIFYDEV SSCam.Reolink520A
NR 447
NTFY_ORDER 50-get_Reolink520A_pic_ntfy
REGEXP SSCam.Reolink520A:snap
STATE 2021-12-11 18:08:44
TYPE notify
READINGS:
2021-12-12 11:10:36 state active
2021-12-11 18:08:44 triggeredByDev SSCam.Reolink520A
2021-12-11 18:08:44 triggeredByEvent snap
Attributes:
DbLogExclude .*
alias get_Reolink520A_pic_ntfy
event-on-change-reading .*
room Logik
Und hier in DOIF behelfe ich mir mit dem "wait" Attribut, was ich auch nicht unbedingt schön finde aber es funktioniert.
Internals:
DEF ([MS_Klingel_Tor:relay_0] eq "on")
(set get_Reolink520A_pic_ntfy inactive)
(set get_Lutec_Light_pic_ntfy inactive)
(set SSCam.Reolink520A snap)
(set SSCam.Lutec_Light snap)
(set DS918_ChatBot asyncSendItem text= *"Es hat an der Tür im Obergeschoss geklingelt."*)
(set DS918_ChatBot asyncSendItem text="Hier ist das Bild der Hofeinfahrt!" fileUrl="[SSCam.Reolink520A:VideoFolder]/@Snapshot/[SSCam.Reolink520A:LastSnapFilename]")
(set DS918_ChatBot asyncSendItem text="Wer steht vor der Tür?" fileUrl="[SSCam.Lutec_Light:VideoFolder]/@Snapshot/[SSCam.Lutec_Light:LastSnapFilename]")
DOELSEIF ([MS_Klingel_Tor:relay_1] eq "on")
(set get_Reolink520A_pic_ntfy inactive)
(set get_Lutec_Light_pic_ntfy inactive)
(set SSCam.Reolink520A snap) (set SSCam.Lutec_Light snap)
(set DS918_ChatBot asyncSendItem text= *"Es hat an der Tür im Erdgeschoss geklingelt."*)
(set DS918_ChatBot asyncSendItem text="Hier ist das Bild der Hofeinfahrt!" fileUrl="[SSCam.Reolink520A:VideoFolder]/@Snapshot/[SSCam.Reolink520A:LastSnapFilename]")
(set DS918_ChatBot asyncSendItem text="Wer steht vor der Tür?" fileUrl="[SSCam.Lutec_Light:VideoFolder]/@Snapshot/[SSCam.Lutec_Light:LastSnapFilename]")
DOELSE
(set get_Reolink520A_pic_ntfy active)
(set get_Lutec_Light_pic_ntfy active)
FUUID 61b1bf95-f33f-cb6b-8283-54c61fa9e1307f29
FVERSION 98_DOIF.pm:0.252950/2021-12-04
MODEL FHEM
NAME Klingel_Tor
NOTIFYDEV global,MS_Klingel_Tor
NR 440
NTFY_ORDER 50-Klingel_Tor
STATE cmd_3
TYPE DOIF
VERSION 25295 2021-12-04 18:13:39
READINGS:
2021-12-12 11:32:49 Device MS_Klingel_Tor
2021-12-11 17:56:25 cmd 3.2
2021-12-11 17:56:25 cmd_event MS_Klingel_Tor
2021-12-11 17:56:25 cmd_nr 3
2021-12-11 17:56:25 cmd_seqnr 2
2021-12-12 11:32:49 e_MS_Klingel_Tor_relay_0 off
2021-12-12 11:32:49 e_MS_Klingel_Tor_relay_1 off
2021-12-11 17:54:09 mode enabled
2021-12-11 17:56:25 state cmd_3
Regex:
accu:
collect:
cond:
MS_Klingel_Tor:
0:
relay_0 ^MS_Klingel_Tor$:^relay_0:
1:
relay_1 ^MS_Klingel_Tor$:^relay_1:
attr:
wait:
0:
0
0
0
0
0
1.5
0.5
1:
0
0
0
0
0
1.5
0.5
waitdel:
condition:
0 ::ReadingValDoIf($hash,'MS_Klingel_Tor','relay_0') eq "on"
1 ::ReadingValDoIf($hash,'MS_Klingel_Tor','relay_1') eq "on"
do:
0:
0 set get_Reolink520A_pic_ntfy inactive
1 set get_Lutec_Light_pic_ntfy inactive
2 set SSCam.Reolink520A snap
3 set SSCam.Lutec_Light snap
4 set DS918_ChatBot asyncSendItem text= *"Es hat an der Tür im Obergeschoss geklingelt."*
5 set DS918_ChatBot asyncSendItem text="Hier ist das Bild der Hofeinfahrt!" fileUrl="[SSCam.Reolink520A:VideoFolder]/@Snapshot/[SSCam.Reolink520A:LastSnapFilename]"
6 set DS918_ChatBot asyncSendItem text="Wer steht vor der Tür?" fileUrl="[SSCam.Lutec_Light:VideoFolder]/@Snapshot/[SSCam.Lutec_Light:LastSnapFilename]"
1:
0 set get_Reolink520A_pic_ntfy inactive
1 set get_Lutec_Light_pic_ntfy inactive
2 set SSCam.Reolink520A snap
3 set SSCam.Lutec_Light snap
4 set DS918_ChatBot asyncSendItem text= *"Es hat an der Tür im Erdgeschoss geklingelt."*
5 set DS918_ChatBot asyncSendItem text="Hier ist das Bild der Hofeinfahrt!" fileUrl="[SSCam.Reolink520A:VideoFolder]/@Snapshot/[SSCam.Reolink520A:LastSnapFilename]"
6 set DS918_ChatBot asyncSendItem text="Wer steht vor der Tür?" fileUrl="[SSCam.Lutec_Light:VideoFolder]/@Snapshot/[SSCam.Lutec_Light:LastSnapFilename]"
2:
0 set get_Reolink520A_pic_ntfy active
1 set get_Lutec_Light_pic_ntfy active
helper:
DEVFILTER ^global$|^MS_Klingel_Tor$
NOTIFYDEV global|MS_Klingel_Tor
event relay_1: off
globalinit 1
last_timer 0
sleeptimer -1
timerdev MS_Klingel_Tor
timerevent relay_1: off
triggerDev MS_Klingel_Tor
timerevents:
relay_1: off
timereventsState:
relay_1: off
triggerEvents:
relay_1: off
triggerEventsState:
relay_1: off
internals:
perlblock:
readings:
all MS_Klingel_Tor:relay_0 MS_Klingel_Tor:relay_1
trigger:
uiState:
uiTable:
Attributes:
DbLogExclude .*
alias Klingel_Tor
event-on-change-reading .*
room Logik
wait 0,0,0,0,0,1.5,0.5:0,0,0,0,0,1.5,0.5
Gruss Denny
Hi Denny,
das Problem ist das Triggern auf "snap" im notify.
Hintergrund: technisch bedingt wird erst der Schnappschuss ausgeführt und danach der dazu gehörende Filename etc. ermittelt.
Du musst also auf "LastSnapFilename" triggern, dann klappt das. Es ist auch so im SSCam Wiki (https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station#Alternativer_Versand_-_Triggern_des_Versands_mit_notify) beschrieben. Das wait im DOIF funktioniert deswegen weil du dem Modul Zeit gibst, ist aber technisch nicht korrekt und u.U. unzuverlässig je nach Länge des wait.
Mittlerweile kannst du den Versand mit SSChatBot auch direkt im SSCam-Modul hinterlegen und brauchst kein notify mehr.Siehe hier (https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station#Aktivierung_des_integrierten_Schnappschu.C3.9F-_und_Aufnahmen-Versand_mit_Synology_Chat).
Grüße,Heiko
Zitat von: DS_Starter am 12 Dezember 2021, 12:44:05
Hi Denny,
das Problem ist das Triggern auf "snap" im notify.
Hintergrund: technisch bedingt wird erst der Schnappschuss ausgeführt und danach der dazu gehörende Filename etc. ermittelt.
Du musst also auf "LastSnapFilename" triggern, dann klappt das. Es ist auch so im SSCam Wiki (https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station#Alternativer_Versand_-_Triggern_des_Versands_mit_notify) beschrieben. Das wait im DOIF funktioniert deswegen weil du dem Modul Zeit gibst, ist aber technisch nicht korrekt und u.U. unzuverlässig je nach Länge des wait.
Da hast Du natürlich Recht. Das funktioniert auch. Vielen Dank für den Hinweis.. Sind sehr viele readings vorhanden.
Mittlerweile kannst du den Versand mit SSChatBot auch direkt im SSCam-Modul hinterlegen und brauchst kein notify mehr.Siehe hier (https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station#Aktivierung_des_integrierten_Schnappschu.C3.9F-_und_Aufnahmen-Versand_mit_Synology_Chat).
Funktioniert leider nicht bei mir. Keine Ahnung warum. Verbose liefert nicht wirklich Fehler bezüglich ChatBot... Aber auch keine Infos zum Versand. Oder sollte ich das eher am Kamera Device mit verbose suchen? Denn dort ist sind ja auch die Attribute dazu gesetzt.
Grüße,Heiko
Gruss Denny
Zitat
Funktioniert leider nicht bei mir. Keine Ahnung warum. Verbose liefert nicht wirklich Fehler bezüglich ChatBot... Aber auch keine Infos zum Versand. Oder sollte ich das eher am Kamera Device mit verbose suchen? Denn dort ist sind ja auch die Attribute dazu gesetzt.
Ja, du setzt das verbose im Kameradevice hoch und schaust/postest die relevanten Logauszüge.
Wie ist denn das Attr snapChatTxt bei dir gesetzt ?
Zum Vergleich bei mir:
chatbot => SynChatBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt
Hallo Heiko
hier der Auszug aus dem List des Kamera Device:
Attributes:
DbLogExclude .*
alias SSCam.Lutec_Light
devStateIcon .*isable.*:set_off .*nap:li_wht_on
htmlattr width=500 height=325
httptimeout 20
icon it_camera
pollcaminfoall 210
pollnologging 1
recChatTxt DS918_ChatBot, denny , Bewegungsalarm bei $CAM. Es wurde $CTIME die Aufnahme $FILE * erstellt. Jetzt ist es $TIME.
room System
session SurveillanceStation
snapGallerySize Full
verbose 0
videofolderMap http://192.168.178.44:8081/surveillance
webCmd on:off:snap:enable:disable:runView:stopView
vg denny
Hallo Heiko
Funktioniert. Das Attribut war falsch aufgebaut....gesetzt.
Sorry für die Mühe....
Und beim "recChatTxt" werden dann die Video Snaps getriggert?
vg denny
Zitat
Und beim "recChatTxt" werden dann die Video Snaps getriggert?
Naja fast richtig ... wenn Videos aufgenommen wurden, wird mit diesem Attr der Versand der Filmchen über SSChatBot veranlasst.
D.h. wenn das Video fertig aufgenommen ist.
Okay... Thema Video... Das will irgendwie nicht...
Wenn ich soetwas via Chat Bot direkt absetzte
asyncSendItem text="Ein aktuelles Video vom Hof!" fileUrl="http://192.168.178.44:8081/surveillance/SSCam.Lutec_Light/20211212PM/Lutec-Light-20211212-170410-1639325050.mp4
kommt eine Fehlermeldung:
2021-12-12 17:10:29.462 SSChatBot DS918_ChatBot Error: payload has wrong format
2021-12-12 17:10:29.462 SSChatBot DS918_ChatBot Errorcode: 120
2021-12-12 17:10:29.462 SSChatBot DS918_ChatBot Error
2021-12-12 17:10:29.491 SSChatBot DS918_ChatBot Error: payload has wrong format
2021-12-12 17:10:29.491 SSChatBot DS918_ChatBot Errorcode: 120
2021-12-12 17:10:29.491 SSChatBot DS918_ChatBot Error
vg denny
Hast du in asyncSendItem ganz hinten ein " vergessen oder nur nicht hier reinkopiert ?
Ups Sorry übersehen...
Aber trotzdem mag er nicht.
Jetzt schmeist er so ein Quatsch:
2021-12-12 17:22:07.568 SSChatBot DS918_ChatBot Error
2021-12-12 17:22:07.632 SSChatBot DS918_ChatBot Error: exceed max file size
2021-12-12 17:22:07.632 SSChatBot DS918_ChatBot Errorcode: 409
2021-12-12 17:22:07.632 SSChatBot DS918_ChatBot Error
Kennst Du eine Begrenzung der FileSize für den Versand?
Wäre mir neu...
vg denny
Zitat
Kennst Du eine Begrenzung der FileSize für den Versand?
Wäre mir neu...
Ja, die ist 32MB. Siehe die Syno KB:
https://kb.synology.com/de-de/DSM/help/Chat/chat_integration?version=6
ja habe es bemerkt. Habe jetzt die Aufnahme Dauer auf 1 min reduziert. Jetzt sind die Files kleiner 32 Mb.
Jetzt funktioniert es auch...
vg denny
Wow, was hast du denn für eine Auflösung wenn du für < 32MB auf 1 Minute gehen musst ?
nichts besonders... die 1 liefert bei 5 min Dauerschleife etwa 24MB große Files... die andere bei der gleichen Einstellung ca 73 MB.... wobei die 1 mit einer Auflösung von 2304x1296 im H264 Codec läuft. Die zweite, schlechtere Auflösung kann ich nicht einstellen am Codec und auch die Auflösung nicht.... Das ist so eine Licht Kamera von Steinel, welche eine besondere Firmware bekommen hat, damit der rtsp Stream abrufbar ist.... Die hat scheinbar eine schlechtere Kompressionsrate....
vg denny
Hallo Experten
Ich habe ein Problem bei der Erstellung eines DOIF in Kombination mit der Eingabe eines Values im "ChatBot".
Folgender Aufbau:
- 1. DOIF welches die Grundstruktur inkl. interaktive Button zur Verfügung stellt
- 2. ein dummy Device, welches mit den Eingaben aus der Interaktion aus einem weiteren DOIF befüllt wird
- 3. und noch ein zusätzliches DOIF, welches die gewünschte Eingabe welche im dummy zu sehen ist, als [set....] an Fhem übergibt.
Dazu habe ich 2 Probleme:
1. im 2 DOIF welches den dummy befüllt, wird ein 3 CMD nicht ausgeführt. Daher habe ich mir ein weiteres DOIF gebastelt, welches die daten aus dem dummy liest und einen [set...] absetzten soll.....
2. bis zu dem Pkt. das die beiden DOIF zusammen mit dem dummy laufen ist es scheinbar kein Problem.... Aber sobald das 3. DOIF den [set .....] an das jeweilige Device absetzten soll, kommt eine Fehlermeldung....
DOIF SEND_SET_cmd error: set "set SW_Bettlicht Dimmer 13.5": Please define "set first
Ich hatte bereits dazu den Fehler eines fehlenden Leerzeichen vor dem Wert in Verdacht.... Aber daran scheint es nicht zu liegen. Denn wenn ich den gleiche Aufruf aus dem EVENT Monitor über nehme und in der Konsole aufrufe funktioniert es.
hier die 3 LIST zu den DOIF und des dummy:
List vom MAIN DOIF:DOELSEIF
([DS918_ChatBot:recText] eq "hz" or [DS918_ChatBot:recActionsValue] eq "hz" or [DS918_ChatBot:recActionsValue] eq "BTN_BCK_HZ")
(set DS918_ChatBot asyncSendItem text= *"Status 🌡️ Temp. Heizung!"*)
(set DS918_ChatBot asyncSendItem text=
*Thermostate Heizung:*\n
TH_Büro: [TH_Buero:temperature] | [TH_Buero:desired-temp] | [MS_Umwelt_Buero:temperature] | [MS_Umwelt_Buero:lastseen] | [MS_Umwelt_Buero:batteryPercent]\n
TH_XXXXXX: [TH_XXXXX:temperature] | [TH_XXXXX:desired-temp] | [MS_Umwelt_Kind1:temperature] | [MS_Umwelt_Kind1:lastseen] | [MS_Umwelt_Kind1:batteryPercent]\n
)
(set DS918_ChatBot asyncSendItem text=
*"Wie gehts weiter...?"*
attachments="[{"callback_id": "set_temp_th", "text": "Wunschtemperatur einstellen...!",
"actions":[{"type": "button", "name": "BTN_HM", "value": "hm", "text": "🤖️Hauptmenü", "style": "orange"},
{"type": "button", "name": "BTN_FCT_DEV", "value": "fct_th_dev", "text": "🔜️Temp. einstellen", "style": "orange"}]}]")
DOELSEIF
([DS918_ChatBot:recText] eq "fct_th_dev" or [DS918_ChatBot:recActionsValue] eq "fct_th_dev" )
(set DS918_ChatBot asyncSendItem text= *"Thermostat auswählen"*)
(setreading Set_tmp_value cmd_value_flg false)
(setreading Set_tmp_value cmd_device_flg false)
(set DS918_ChatBot asyncSendItem text=
*"Wähle ein Thermostat!"*
attachments="[{"callback_id": "set_device", "text": "Thermostat auswählen",
"actions":[{"type": "button", "name": "BTN_TH_Buero", "value": "set SW_Bettlicht Dimmer", "text": "🌡️ Büro", "style": "green"},
{"type": "button", "name": "BTN_TH_XXXXX", "value": "set TH_ XXXXX desired-temp", "text": "🌡️ XXXXXx", "style": "green"},
{"type": "button", "name": "zurück_th", "value": "BTN_BCK_HZ", "text": "🔙️", "style": "red"}]}]")
DOELSEIF
([DS918_ChatBot:callback_id] eq "set_device")
(set DS918_ChatBot asyncSendItem text= *"Gib einen 🌡️ Wert im Bereich zwischen [0 - 28.5] °C!"*)
DOELSE
FUUID 61b39b2b-f33f-cb6b-bff8-0aa731cb165ad382
MODEL FHEM
NAME DS_FHEM_Bot_doif
NOTIFYDEV global,DS918_ChatBot
NR 101
NTFY_ORDER 50-DS_FHEM_Bot_doif
STATE cmd_13
TYPE DOIF
VERSION 25295 2021-12-04 18:13:39
READINGS:
2021-12-15 12:30:44 Device DS918_ChatBot
2021-12-15 12:30:44 cmd 13
2021-12-15 12:30:44 cmd_event DS918_ChatBot
2021-12-15 12:30:44 cmd_nr 13
2021-12-15 12:30:44 e_DS918_ChatBot_recActionsValue
2021-12-15 12:30:44 e_DS918_ChatBot_recText 13.5
2021-12-15 12:25:16 mode enabled
2021-12-15 12:30:44 state cmd_13
Regex:
accu:
collect:
cond:
DS918_ChatBot:
0:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
1:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
10:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
11:
callback_id ^DS918_ChatBot$:^callback_id:
2:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
3:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
4:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
5:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
6:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
7:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
8:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
9:
recActionsValue ^DS918_ChatBot$:^recActionsValue:
recText ^DS918_ChatBot$:^recText:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "start" or ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "hm" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "hm"
1 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "hilfe" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "hilfe"
10 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "fct_th_dev" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "fct_th_dev"
11 ::ReadingValDoIf($hash,'DS918_ChatBot','callback_id') eq "set_device"
2 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "status" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "status" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "BTN_BCK_SYS"
3 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "fct_sys" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "fct_sys"
4 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "energy" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "energy"
5 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "schalter" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "schalter" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "BTN_BCK_SW"
6 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "fct_sw" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "fct_sw"
7 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "cam" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "cam" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "BTN_BCK_CAM"
8 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "fct_cam" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "fct_cam"
9 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') eq "hz" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "hz" or ::ReadingValDoIf($hash,'DS918_ChatBot','recActionsValue') eq "BTN_BCK_HZ"
do:
0:
0 set DS918_ChatBot asyncSendItem text= "Hallo ich bin Dein 🤖️ChatBot! Was kann ich für Dich tun? \n '❓️hilfe' --> Übersicht an Möglichkeiten \n '↪️start' --> Neustart Dialog \n" attachments="[{"callback_id": "hauptmenue", "text": "Du bfindest Dich im Hauptmenü!", "actions":[{"type": "button", "name": "BTN_STATUS", "value": "status", "text": "💻️Status Systeme", "style": "blue"}, {"type": "button", "name": "BTN_ENERGY", "value": "energy", "text": "⚡️Energie Daten", "style": "blue"}, {"type": "button", "name": "BTN_SWITCH", "value": "schalter", "text": "💡️Schalter", "style": "blue"}, {"type": "button", "name": "BTN_HZ", "value": "hz", "text": "🌡️Heizung", "style": "blue"}, {"type": "button", "name": "BTN_CAM", "value": "cam", "text": "🔐️Sicherheit", "style": "red"}, {"type": "button", "name": "BTN_HLP", "value": "hilfe", "text": "❓️Hilfemenü", "style": "orange"}]}]"
1:
0 set DS918_ChatBot asyncSendItem text= "Hilfreiche Informationen zum ChatBot: \n '[/slash] Befehle direkt absetzen wenn Du das Gerät kennst z.B /set SW_Licht_Halle on'\n 'Texte welche der Bot nicht kennt werden nicht beantwortet!' \n 'Texte oder Worte welcher der BOT direkt versteht z.B staus, energy, hm, hilfe, cam, hz, ....' \n 'Button verwenden im jeweiligen Menü.... Du kannst direkt etwas schalten oder abfragen' \n 'Menü auswählen welche Dir angezeigt werden... vordefinierte Button und Aktion' \n" attachments="[{"callback_id": "hilfemenü", "text": "Du befindest Dich im Hilfemenü!", "actions":[{"type": "button", "name": "BTN_HM", "value": "hm", "text": "🤖️Hauptmenü", "style": "orange"}]}]"
10:
0 set DS918_ChatBot asyncSendItem text= *"Thermostat auswählen"*
1 setreading Set_tmp_value cmd_value_flg false
2 setreading Set_tmp_value cmd_device_flg false
3 set DS918_ChatBot asyncSendItem text= *"Wähle ein Thermostat!"* attachments="[{"callback_id": "set_device", "text": "Thermostat auswählen", "actions":[{"type": "button", "name": "BTN_TH_Buero", "value": "set SW_Bettlicht Dimmer", "text": "🌡️ Büro", "style": "green"}, {"type": "button", "name": "BTN_TH_XXXXX", "value": "set TH_XXXXX desired-temp", "text": "🌡️ XXXXX", "style": "green"}, {"type": "button", "name": "zurück_th", "value": "BTN_BCK_HZ", "text": "🔙️", "style": "red"}]}]"
11:
0 set DS918_ChatBot asyncSendItem text= *"Gib einen 🌡️ Wert im Bereich zwischen [0 - 28.5] °C!"*
12:
0
2:
0 set DS918_ChatBot asyncSendItem text= *"Hier ist die System | Status Übersicht:"*
1 set DS918_ChatBot asyncSendItem text= FHEM Docker: [DockerImageInfo:container.hostname]/[DockerImageInfo:image.version]\n FHEM Installer: [fhemInstaller:installedPerl]/[fhemInstaller:state]/[fhemInstaller:perlVersion]\n FHEM NPM: [fhemServerNpm:outdated]/[fhemServerNpm:state]/[fhemServerNpm:nodejsVersion]\n FHEM 💻️: [fhemServerApt:toUpgrade]/[fhemServerApt:state]/[fhemServerApt:updatesAvailable]\n deCONZ 📶️: [deCONZ:state]/[deCONZ:lastError]\n openWB MQTT: [openWB_MQTT_Client:state]\n *DS918 MQTT Broker:* [DS918Broker:state]/[DS918Broker:connection]\n FHEM MQTT Broker: [FHEM_MQTT_SERVER:state]/[FHEM_MQTT_SERVER:nrclients]\n FritzBox 6591 Base: [fritzbox_FB6591:state]/[fritzbox_FB6591:box_ipExtern]/[fritzbox_FB6591:box_rateDown]/[fritzbox_FB6591:box_rateUp]\n *Lametric ⏲️:* [Lametric_Time:state]/[Lametric_Time:wifiIp]\n FirtzBox ☎️: [FB6591_Call:state]\n
2 set DS918_ChatBot asyncSendItem text= *"Wie gehts weiter...?"* attachments="[{"callback_id": "status", "text": "💻️System | weitere Funktionen ?", "actions":[{"type": "button", "name": "BTN_HM", "value": "hm", "text": "🤖️Hauptmenü", "style": "orange"}, {"type": "button", "name": "BTN_FCT_SYS", "value": "fct_sys", "text": "🔜️weitere Funktionen", "style": "orange"}]}]"
3:
0 set DS918_ChatBot asyncSendItem text= *"💻️System Funktionen zur Auswahl."*
1 set DS918_ChatBot asyncSendItem text= *"Wähle ein Funktion aus!"* attachments="[{"callback_id": "system_funktion", "text": "System Funktionen ?", "actions":[{"type": "button", "name": "fb6591_update", "value": "/set fritzbox_FB6591 update", "text": "Update FB6591", "style": "green"}, {"type": "button", "name": "fb6591_wlan", "value": "/set fritzbox_FB6591 wlan2.4 on", "text": "WLAN_2.4 GHz *ON*", "style": "green"}, {"type": "button", "name": "fb6591_wlan", "value": "/set fritzbox_FB6591 wlan5 on", "text": "WLAN_5 GHz *ON*", "style": "green"}, {"type": "button", "name": "fb6591_wlan", "value": "/set fritzbox_FB6591 wlan2.4 off", "text": "WLAN_2.4 GHz *OFF*", "style": "blue"}, {"type": "button", "name": "fb6591_wlan", "value": "/set fritzbox_FB6591 wlan5 off", "text": "WLAN_5 GHz *OFF*", "style": "blue"}, {"type": "button", "name": "fb6591_wlan", "value": "/set fritzbox_FB6591 guestWlan on", "text": "Gäste Wlan *ON*", "style": "green"}, {"type": "button", "name": "fb6591_wlan", "value": "/set fritzbox_FB6591 guestWlan off", "text": "Gäste Wlan *off*", "style": "blue"}, {"type": "button", "name": "cul_0", "value": "/set CUL_0 reopen", "text": "CUL_0 reset", "style": "green"}, {"type": "button", "name": "cul_0_pair", "value": "/set CUL_0 hmPairForSec 180", "text": "CUL_0 HM Pairing", "style": "green"}, {"type": "button", "name": "mqtt_ds918", "value": "/set DS918Broker connect", "text": "MQTT Broker Init", "style": "green"}, {"type": "button", "name": "fb_dect", "value": "/set FB6490 refreshstate", "text": "FB DECT Init", "style": "green"}, {"type": "button", "name": "sonos", "value": "/set Sonos RescanNetwork", "text": "Sonos Init", "style": "green"}, {"type": "button", "name": "deconz", "value": "/set deCONZ active", "text": "deCONZ Init", "style": "green"}, {"type": "button", "name": "deconz", "value": "/set deCONZ statusRequest", "text": "deCONZ Status Req.", "style": "green"}, {"type": "button", "name": "callmonitor", "value": "/set FB6591_Call reopen", "text": "CallMonitor reset", "style": "green"}, {"type": "button", "name": "zurück_sys", "value": "BTN_BCK_SYS", "text": "🔙️", "style": "red"}]}]"
4:
0 set DS918_ChatBot asyncSendItem text= *"Hier ist die Übersicht der ⚡️Energie Daten:"*
1 set DS918_ChatBot asyncSendItem text= PV-Nord: [MS_Liefern_Nord:PowerFlow_Site_P_PV] W/[MS_Liefern_Nord:state]/[MS_Liefern_Nord:Inverter_Cumulation_DAY_ENERGY_Value] Wh/[MS_Liefern_Nord:Inverter_Common_YEAR_ENERGY_Value] Wh\n PV-Süd: [MS_Liefern_Sued:P_pv_sued]W\n P-EG: [MS_P_EG:wirkleistung_EG]W\n P-OG: [MS_P_OG:wirkleistung_OG]W\n P-Netz: [MS_P_Netz:wirkleistung_Netz]W\n Speicher-SOC: [SOC_Speicher:soc]%\n
2 set DS918_ChatBot asyncSendItem text= *"Wie gehts weiter...?"* attachments="[{"callback_id": "energy", "text": "⚡️Energie | weitere Funktionen ?", "actions":[{"type": "button", "name": "BTN_HM", "value": "hm", "text": "Hauptmenü", "style": "orange"}, {"type": "button", "name": "BTN_BCK", "value": "fct_eng", "text": "🔜️weitere Funktionen", "style": "orange"}]}]"
5:
0 set DS918_ChatBot asyncSendItem text= *"Status der Schalter!"*
1 set DS918_ChatBot asyncSendItem text= *Rolläden EG:*\n Ost: [MQTT2_shellyswitch25_F34508:pct] | [MQTT2_shellyswitch25_F34508:rollers_1_last_direction]\n Süd1: [MQTT2_shellyswitch25_F345EE:pct] | [MQTT2_shellyswitch25_F345EE:rollers_1_last_direction]\n Süd2: [MQTT2_shellyswitch25_F35475:pct] | [MQTT2_shellyswitch25_F35475:rollers_1_last_direction]\n Süd3: [MQTT2_shellyswitch25_F3FFBC:pct] | [MQTT2_shellyswitch25_F3FFBC:rollers_1_last_direction]\n *Lichtschalter | Schalter:*\n 💡️🧰️: [SW_Licht_Halle:result-power1] | [SW_Licht_Halle:lwt]\n 💡️🔪️: [SW_Kueche_Licht:result-power1] | [SW_Kueche_Licht:lwt]\n 🎄️: [SW_Licht_WZ:result-power] | [SW_Licht_WZ:lwt]\n 🛏️💡️: [SW_Bettlicht:state] | [SW_Bettlicht:lwt]\n 📺️ DG: [SW_Media_DG:result-power] | [SW_Media_DG:lwt]\n
2 set DS918_ChatBot asyncSendItem text= *"Wie gehts weiter...?"* attachments="[{"callback_id": "status", "text": "🔳️Schalterauswahl | weitere Funktionen ?", "actions":[{"type": "button", "name": "BTN_HM", "value": "hm", "text": "🤖️Hauptmenü", "style": "orange"}, {"type": "button", "name": "BTN_FCT_SW", "value": "fct_sw", "text": "🔜️weitere Funktionen", "style": "orange"}]}]"
6:
0 set DS918_ChatBot asyncSendItem text= *"Schalter Auswahl."*
1 set DS918_ChatBot asyncSendItem text= *"Wähle ein Funktion aus!"* attachments="[{"callback_id": "system_funktion", "text": "System Funktionen ?", "actions":[{"type": "button", "name": "RL_Hof", "value": "/set MQTT2_shellyswitch25_F34508 close", "text": "RL HOF zu ", "style": "blue"}, {"type": "button", "name": "RL_Hof", "value": "/set MQTT2_shellyswitch25_F34508 open", "text": "RL HOF auf", "style": "black"}, {"type": "button", "name": "RL_WZ1", "value": "/set MQTT2_shellyswitch25_F345EE close", "text": "RL WZ zu", "style": "blue"}, {"type": "button", "name": "RL_WZ1", "value": "/set MQTT2_shellyswitch25_F345EE open", "text": "RL WZ auf", "style": "black"}, {"type": "button", "name": "RL_WZ2", "value": "/set MQTT2_shellyswitch25_F35475 close", "text": "RL WZ zu", "style": "blue"}, {"type": "button", "name": "RL_WZ2", "value": "/set MQTT2_shellyswitch25_F35475 open", "text": "RL WZ auf", "style": "black"}, {"type": "button", "name": "RL_EZ", "value": "/set MQTT2_shellyswitch25_F3FFBC close", "text": "RL EZ zu", "style": "blue"}, {"type": "button", "name": "RL_EZ", "value": "/set MQTT2_shellyswitch25_F3FFBC open", "text": "RL EZ auf", "style": "black"}, {"type": "button", "name": "SW_Halle", "value": "/set SW_Licht_Halle on", "text": "[Licht Halle] AN", "style": "green"}, {"type": "button", "name": "SW_Halle", "value": "/set SW_Licht_Halle off", "text": "[Licht Halle] AUS", "style": "orange"}, {"type": "button", "name": "SW_Küche", "value": "/set SW_Kueche_Licht on", "text": "[Licht Küche] AN", "style": "green"}, {"type": "button", "name": "SW_Küche", "value": "/set SW_Kueche_Licht off", "text": "[Licht Küche] AUS", "style": "orange"}, {"type": "button", "name": "SW_WZ", "value": "/set SW_Licht_WZ on", "text": "[Beleuchtung WZ] AN", "style": "green"}, {"type": "button", "name": "SW_WZ", "value": "/set SW_Licht_WZ off", "text": "[Beleuchtung WZ] AUS", "style": "orange"}, {"type": "button", "name": "SW_SZ", "value": "/set SW_Bettlicht on", "text": "[Bettlich SZ] AN", "style": "green"}, {"type": "button", "name": "SW_SZ", "value": "/set SW_Bettlicht off", "text": "[Bettlich SZ] AUS", "style": "orange"}, {"type": "button", "name": "zurück_SW", "value": "BTN_BCK_SW", "text": "🔙️", "style": "red"}]}]"
7:
0 set DS918_ChatBot asyncSendItem text= *"Status 📷️ Kameras!"*
1 set DS918_ChatBot asyncSendItem text= *Kamera Hof:*\n Lutec: [SSCam.Lutec_Light:state] | [SSCam.Lutec_Light:Availability] | [SSCam.Lutec_Light:LastSnapTime] | [SSCam.Lutec_Light:LastUpdateTime] | [SSCam.Lutec_Light:CamLastRecTime]\n ReoLink: [SSCam.Reolink520A:state] | [SSCam.Reolink520A:Availability] | [SSCam.Reolink520A:LastSnapTime] | [SSCam.Reolink520A:LastUpdateTime] | [SSCam.Reolink520A:CamLastRecTime]\n
2 set DS918_ChatBot asyncSendItem text= *"Wie gehts weiter...?"* attachments="[{"callback_id": "status", "text": "📷️Kameras | weitere Funktionen ?", "actions":[{"type": "button", "name": "BTN_HM", "value": "hm", "text": "🤖️Hauptmenü", "style": "orange"}, {"type": "button", "name": "BTN_FCT_CAM", "value": "fct_cam", "text": "🔜️weitere Funktionen", "style": "orange"}]}]"
8:
0 set DS918_ChatBot asyncSendItem text= *"Wähle eine 📷️ Kamera aus!"*
1 set DS918_ChatBot asyncSendItem text= *"Wähle ein Funktion aus!"* attachments="[{"callback_id": "system_funktion", "text": "System Funktionen ?", "actions":[{"type": "button", "name": "ReoLink", "value": "get_stream_reolink", "text": "🎥️ Hof erstellen...", "style": "green"}, {"type": "button", "name": "Lutec", "value": "get_stream_lutec", "text": "🎥️ Tür erstellen...", "style": "green"}, {"type": "button", "name": "ReoLink", "value": "/set SSCam.Reolink520A snap", "text": "📸️ Bild Hof", "style": "orange"}, {"type": "button", "name": "Lutec", "value": "/set SSCam.Lutec_Light snap", "text": "📸️ Bild Tür", "style": "orange"}, {"type": "button", "name": "zurück_cam", "value": "BTN_BCK_CAM", "text": "🔙️", "style": "red"}]}]"
9:
0 set DS918_ChatBot asyncSendItem text= *"Status 🌡️ Temp. Heizung!"*
1 set DS918_ChatBot asyncSendItem text= *Thermostate Heizung:*\n TH_Büro: [TH_Buero:temperature] | [TH_Buero:desired-temp] | [MS_Umwelt_Buero:temperature] | [MS_Umwelt_Buero:lastseen] | [MS_Umwelt_Buero:batteryPercent]\n TH_XXXX: [TH_XXXXX:temperature] | [TH_XXXXX:desired-temp] | [MS_Umwelt_Kind1:temperature] | [MS_Umwelt_Kind1:lastseen] | [MS_Umwelt_Kind1:batteryPercent]\n
2 set DS918_ChatBot asyncSendItem text= *"Wie gehts weiter...?"* attachments="[{"callback_id": "set_temp_th", "text": "Wunschtemperatur einstellen...!", "actions":[{"type": "button", "name": "BTN_HM", "value": "hm", "text": "🤖️Hauptmenü", "style": "orange"}, {"type": "button", "name": "BTN_FCT_DEV", "value": "fct_th_dev", "text": "🔜️Temp. einstellen", "style": "orange"}]}]"
helper:
DEVFILTER ^global$|^DS918_ChatBot$
NOTIFYDEV global|DS918_ChatBot
event recActions: ,recCallbackId: ,recActionsValue: ,recChannelId: ,recChannelname: ,recUserId: 6,recUsername: denny,recPostId: 506806142778,recTimestamp: 2021-12-15 12:30:44,recText: 13.5,recTriggerword: ,recCommand: ,sendCommandReturn: ,Errorcode: none,Error: none,active
globalinit 1
last_timer 0
sleeptimer -1
timerdev DS918_ChatBot
timerevent recActions: ,recCallbackId: ,recActionsValue: ,recChannelId: ,recChannelname: ,recUserId: 6,recUsername: denny,recPostId: 506806142778,recTimestamp: 2021-12-15 12:30:44,recText: 13.5,recTriggerword: ,recCommand: ,sendCommandReturn: ,Errorcode: none,Error: none,active
triggerDev DS918_ChatBot
bm:
DOIF_Get:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:41:46
max 1.28746032714844e-05
tot 1.28746032714844e-05
mAr:
HASH(0x563ce8acc6b0)
DS_FHEM_Bot_doif
?
DOIF_Notify:
cnt 142
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:29:07
max 0.0592741966247559
tot 0.490550994873047
mAr:
HASH(0x563ce8acc6b0)
HASH(0x563cea238508)
DOIF_Set:
cnt 49
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:25:54
max 0.00105190277099609
tot 0.00375008583068848
mAr:
HASH(0x563ce8acc6b0)
DS_FHEM_Bot_doif
?
timerevents:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 6
recUsername: denny
recPostId: 506806142778
recTimestamp: 2021-12-15 12:30:44
recText: 13.5
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
active
timereventsState:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 6
recUsername: denny
recPostId: 506806142778
recTimestamp: 2021-12-15 12:30:44
recText: 13.5
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
state: active
triggerEvents:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 6
recUsername: denny
recPostId: 506806142778
recTimestamp: 2021-12-15 12:30:44
recText: 13.5
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
active
triggerEventsState:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 6
recUsername: denny
recPostId: 506806142778
recTimestamp: 2021-12-15 12:30:44
recText: 13.5
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
state: active
internals:
readings:
all DS918_ChatBot:recText DS918_ChatBot:recActionsValue DS918_ChatBot:callback_id
trigger:
uiState:
uiTable:
Attributes:
alias DS_FHEM_Bot_doif
do always
event-on-change-reading .*
room Logik
List vom Dummy:Internals:
FUUID 61b97e77-f33f-cb6b-6320-c44a417411001805
NAME Set_tmp_value
NR 486
STATE ???
TYPE dummy
OLDREADINGS:
READINGS:
2021-12-15 12:30:04 cmd_device set SW_Bettlicht Dimmer
2021-12-15 12:30:04 cmd_device_flg true
2021-12-15 12:30:44 cmd_out set SW_Bettlicht Dimmer 13.5
2021-12-15 12:30:44 cmd_value 13.5
2021-12-15 12:30:44 cmd_value_flg true
helper:
bm:
dummy_Define:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 07:43:09
max 1.78813934326172e-05
tot 1.78813934326172e-05
mAr:
HASH(0x563cea7057d0)
Set_tmp_value dummy
dummy_Set:
cnt 1039
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:08:54
max 0.00182294845581055
tot 0.0307319164276123
mAr:
HASH(0x563cea7057d0)
Set_tmp_value
?
Attributes:
DbLogExclude .*
alias Set_tmp_value
room Logik
List vom weiteren 2 und 3 DOIF welche den Dummy befüllen und den [set....] absetzten.:Internals:
CFGFN
DEF ([DS918_ChatBot:recCallbackId] eq "set_device")
(setreading Set_tmp_value cmd_device {(ReadingsVal("DS918_ChatBot","recActionsValue",""))})
(setreading Set_tmp_value cmd_device_flg true)
DOELSEIF
([DS918_ChatBot:recText] >= 0 and [DS918_ChatBot:recText] <= 28.5)
(setreading Set_tmp_value cmd_value {(ReadingsVal("DS918_ChatBot","recText",""))})
(setreading Set_tmp_value cmd_value_flg true)
DOELSE
FUUID 61b9aa75-f33f-cb6b-478b-4413aeff375336e1
MODEL FHEM
NAME DEVICE_set_Temp
NOTIFYDEV global,DS918_ChatBot
NR 2152
NTFY_ORDER 50-DEVICE_set_Temp
STATE cmd_2
TYPE DOIF
VERSION 25295 2021-12-04 18:13:39
READINGS:
2021-12-15 12:30:44 Device DS918_ChatBot
2021-12-15 12:30:44 cmd 2.2
2021-12-15 12:30:44 cmd_event DS918_ChatBot
2021-12-15 12:30:44 cmd_nr 2
2021-12-15 12:30:44 cmd_seqnr 2
2021-12-15 12:30:44 e_DS918_ChatBot_recCallbackId
2021-12-15 12:30:44 e_DS918_ChatBot_recText 13.5
2021-12-15 12:07:48 mode enabled
2021-12-15 12:30:44 state cmd_2
Regex:
accu:
collect:
cond:
DS918_ChatBot:
0:
recCallbackId ^DS918_ChatBot$:^recCallbackId:
1:
recText ^DS918_ChatBot$:^recText:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'DS918_ChatBot','recCallbackId') eq "set_device"
1 ::ReadingValDoIf($hash,'DS918_ChatBot','recText') >= 0 and ::ReadingValDoIf($hash,'DS918_ChatBot','recText') <= 28.5
do:
0:
0 setreading Set_tmp_value cmd_device {(ReadingsVal("DS918_ChatBot","recActionsValue",""))}
1 setreading Set_tmp_value cmd_device_flg true
1:
0 setreading Set_tmp_value cmd_value {(ReadingsVal("DS918_ChatBot","recText",""))}
1 setreading Set_tmp_value cmd_value_flg true
2:
0
helper:
DEVFILTER ^global$|^DS918_ChatBot$
NOTIFYDEV global|DS918_ChatBot
event recActions: ,recCallbackId: ,recActionsValue: ,recChannelId: ,recChannelname: ,recUserId: 6,recUsername: denny,recPostId: 506806142778,recTimestamp: 2021-12-15 12:30:44,recText: 13.5,recTriggerword: ,recCommand: ,sendCommandReturn: ,Errorcode: none,Error: none,active
globalinit 1
last_timer 0
sleeptimer -1
timerdev DS918_ChatBot
timerevent recActions: ,recCallbackId: ,recActionsValue: ,recChannelId: ,recChannelname: ,recUserId: 6,recUsername: denny,recPostId: 506806142778,recTimestamp: 2021-12-15 12:30:44,recText: 13.5,recTriggerword: ,recCommand: ,sendCommandReturn: ,Errorcode: none,Error: none,active
triggerDev DS918_ChatBot
bm:
DOIF_Get:
cnt 3
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:22:44
max 1.71661376953125e-05
tot 4.00543212890625e-05
mAr:
HASH(0x563cea706350)
DEVICE_set_Temp
?
DOIF_Notify:
cnt 419
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:10:53
max 0.0355799198150635
tot 0.81984543800354
mAr:
HASH(0x563cea706350)
HASH(0x563cea238508)
DOIF_Set:
cnt 160
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:28:30
max 0.000327825546264648
tot 0.00797080993652344
mAr:
HASH(0x563cea706350)
DEVICE_set_Temp
?
timerevents:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 6
recUsername: denny
recPostId: 506806142778
recTimestamp: 2021-12-15 12:30:44
recText: 13.5
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
active
timereventsState:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 6
recUsername: denny
recPostId: 506806142778
recTimestamp: 2021-12-15 12:30:44
recText: 13.5
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
state: active
triggerEvents:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 6
recUsername: denny
recPostId: 506806142778
recTimestamp: 2021-12-15 12:30:44
recText: 13.5
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
active
triggerEventsState:
recActions:
recCallbackId:
recActionsValue:
recChannelId:
recChannelname:
recUserId: 6
recUsername: denny
recPostId: 506806142778
recTimestamp: 2021-12-15 12:30:44
recText: 13.5
recTriggerword:
recCommand:
sendCommandReturn:
Errorcode: none
Error: none
state: active
internals:
readings:
all DS918_ChatBot:recCallbackId DS918_ChatBot:recText
trigger:
uiState:
uiTable:
Attributes:
DbLogExclude .*
alias DEVICE_set_Temp
event-on-change-reading .*
room Logik
DOIF welches den [set....] absetzt und der Fehler gewurfen wird:Internals:
CFGFN
DEF (([Set_tmp_value:cmd_device_flg] eq "true") && ([Set_tmp_value:cmd_value_flg] eq "true"))
(set "[Set_tmp_value:cmd_device] [Set_tmp_value:cmd_value]")
(setreading Set_tmp_value cmd_out [Set_tmp_value:cmd_device] [Set_tmp_value:cmd_value])
DOELSE
FUUID 61b9c1f7-f33f-cb6b-eee9-756268a2af870a18
MODEL FHEM
NAME SEND_SET_cmd
NOTIFYDEV global,Set_tmp_value
NR 3895
NTFY_ORDER 50-SEND_SET_cmd
STATE cmd_1
TYPE DOIF
VERSION 25295 2021-12-04 18:13:39
READINGS:
2021-12-15 12:30:44 Device Set_tmp_value
2021-12-15 12:30:44 cmd 1.2
2021-12-15 12:30:44 cmd_event Set_tmp_value
2021-12-15 12:30:44 cmd_nr 1
2021-12-15 12:30:44 cmd_seqnr 2
2021-12-15 12:30:04 e_Set_tmp_value_cmd_device_flg true
2021-12-15 12:30:44 e_Set_tmp_value_cmd_value_flg true
2021-12-15 12:29:03 mode enabled
2021-12-15 12:30:44 state cmd_1
Regex:
accu:
collect:
cond:
Set_tmp_value:
0:
cmd_device_flg ^Set_tmp_value$:^cmd_device_flg:
cmd_value_flg ^Set_tmp_value$:^cmd_value_flg:
attr:
cmdState:
wait:
waitdel:
condition:
0 (::ReadingValDoIf($hash,'Set_tmp_value','cmd_device_flg') eq "true") && (::ReadingValDoIf($hash,'Set_tmp_value','cmd_value_flg') eq "true")
do:
0:
0 set "[Set_tmp_value:cmd_device] [Set_tmp_value:cmd_value]"
1 setreading Set_tmp_value cmd_out [Set_tmp_value:cmd_device] [Set_tmp_value:cmd_value]
1:
0
helper:
DEVFILTER ^global$|^Set_tmp_value$
NOTIFYDEV global|Set_tmp_value
event cmd_value_flg: true
globalinit 1
last_timer 0
sleeptimer -1
timerdev Set_tmp_value
timerevent cmd_value_flg: true
triggerDev Set_tmp_value
bm:
DOIF_Get:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:48:57
max 1.50203704833984e-05
tot 1.50203704833984e-05
mAr:
HASH(0x563ceaf981b8)
SEND_SET_cmd
?
DOIF_Notify:
cnt 27
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:29:07
max 0.0159430503845215
tot 0.0777652263641357
mAr:
HASH(0x563ceaf981b8)
HASH(0x563cea7057d0)
DOIF_Set:
cnt 39
dmx -1000
dtot 0
dtotcnt 0
mTS 15.12. 12:29:14
max 0.000146150588989258
tot 0.00172543525695801
mAr:
HASH(0x563ceaf981b8)
SEND_SET_cmd
?
timerevents:
cmd_value_flg: true
cmd_out: set SW_Bettlicht Dimmer 13.5
timereventsState:
cmd_value_flg: true
cmd_out: set SW_Bettlicht Dimmer 13.5
triggerEvents:
cmd_value_flg: true
cmd_out: set SW_Bettlicht Dimmer 13.5
triggerEventsState:
cmd_value_flg: true
cmd_out: set SW_Bettlicht Dimmer 13.5
internals:
readings:
all Set_tmp_value:cmd_device_flg Set_tmp_value:cmd_value_flg
trigger:
uiState:
uiTable:
Attributes:
DbLogExclude .*
alias SEND_SET_cmd
event-on-change-reading .*
room Logik
Vielleicht ist ja auch die Architektur einfacher zu gestalten aber ich wundere mich trotzdem über den Fehler des DOIF in Kombination mit dem Bot.
Der eigentliche Wunsch des Ganzen wäre dabei: Wenn z.B Device wie Thermostate via Value Eingabe im ChatBot gesteuert werden könnten.
Ich habe dazu im Moment keine Andere Idee umd die Daten via ChatBot ans Fhem zu übergeben.
Vg Denny
Hallo Denny,
ich muß voraus schicken, dass ich von DOIF keinerlei Ahnung habe weil dieses Tool bisher noch nie von mir benötigt wurde.
Erledige alles per at/notify.
Aber meiner Meinung nach ist das Problem in der Fehlermeldung bereits enthalten.
Es wird set "set ...
set "set SW_Bettlicht Dimmer 13.5": Please define "set first
aufgerufen was mit Sicherheit falsch ist, es muß sicherlich
set "SW_Bettlicht Dimmer 13.5"
heißen.
Es kommt wohl aus dieser Definition:
Zitat
(set DS918_ChatBot asyncSendItem text=
*"Wähle ein Thermostat!"*
attachments="[{"callback_id": "set_device", "text": "Thermostat auswählen",
"actions":[{"type": "button", "name": "BTN_TH_Buero", "value": "set SW_Bettlicht Dimmer", "text": "🌡️ Büro", "style": "green"},
{"type": "button", "name": "BTN_TH_XXXXX", "value": "set TH_ XXXXX desired-temp", "text": "🌡️ XXXXXx", "style": "green"},
{"type": "button", "name": "zurück_th", "value": "BTN_BCK_HZ", "text": "🔙️", "style": "red"}]}]")
Schau doch mal wo mit DOIF evtl. ein "set" hinzugezaubert wird. Evtl. im DOIF Forum mal nachfragen.
Grüße,
Heiko
Hallo Heiko
Danke für den Hinweis.. Das kann natürlich sein, das hier bei der EINGABE ins System via ChatBot der [set] hier schon den DOIF oder das FHEM beeinflusst.
Leider finde ich keine Lösung, wie ich in einem DOIF oder notify aus den beiden Readings des dummy Device, den eigentlichen (set ........] String zusammenbauen kann.
Daher habe ich versucht den (set) schon bei der Eingabe via interaktiven Button ans System mit zu übergeben.
Vg Denny
ZitatLeider finde ich keine Lösung, wie ich in einem DOIF oder notify aus den beiden Readings des dummy Device, den eigentlichen (set ........] String zusammenbauen kann.
Bei DOIF weiß ich es nicht, aber mit einem notify / at ist es recht einfach mit Perl möglich.
In beiden Modulen kannst du ja Code in {} angeben und ausführen lassen.
Hier mal nur eine prinzipielle Anregung die man natürlich nicht so verwenden kann. Nur das Prinzip:
define ssc.not notify Dummy:Reading2.*
{
my $str1 = ReadingsVal ("Dummy", "Reading1", "");
my $str2 = ReadingsVal ("Dummy", "Reading2", "");
my $str = $str1.' '.$str2;
fhem ("set ...... $str");
.....
}
Dabei sollen Reading1 und Reading2 die von dir erwähnten Readings sein. Wenn du z.B. auf Reading2 triggerst wird der Prozess in Gang gesetzt sobald du dieses Reading mit deinem DOIF "gefüllt" hast.
VG
Hallo Heiko
Danke für das notify Beispiel im perl Stil.
Habe das DOIF und das notify verglichen.
Beide laufen. Es kommt folgender Sring im Output cmd des dummy heraus(siehe Anhang).
List des DOIF:
Internals:
DEF (([Set_tmp_value:cmd_device_flg] eq "true") && ([Set_tmp_value:cmd_value_flg] eq "true"))
(set [Set_tmp_value:cmd_device] [Set_tmp_value:cmd_value])
(setreading Set_tmp_value cmd_out [Set_tmp_value:cmd_device] [Set_tmp_value:cmd_value])
DOELSE
FUUID 61b9c1f7-f33f-cb6b-eee9-756268a2af870a18
FVERSION 98_DOIF.pm:0.252950/2021-12-04
MODEL FHEM
NAME SEND_SET_cmd
NOTIFYDEV Set_tmp_value,global
NR 490
NTFY_ORDER 50-SEND_SET_cmd
STATE cmd_1
TYPE DOIF
VERSION 25295 2021-12-04 18:13:39
READINGS:
2021-12-16 08:04:29 Device Set_tmp_value
2021-12-16 08:04:29 cmd 1.2
2021-12-16 08:04:29 cmd_event Set_tmp_value
2021-12-16 08:04:29 cmd_nr 1
2021-12-16 08:04:29 cmd_seqnr 2
2021-12-16 08:04:27 e_Set_tmp_value_cmd_device_flg true
2021-12-16 08:04:29 e_Set_tmp_value_cmd_value_flg true
2021-12-16 08:04:09 mode enabled
2021-12-16 08:04:29 state cmd_1
Regex:
accu:
collect:
cond:
Set_tmp_value:
0:
cmd_device_flg ^Set_tmp_value$:^cmd_device_flg:
cmd_value_flg ^Set_tmp_value$:^cmd_value_flg:
attr:
cmdState:
wait:
waitdel:
condition:
0 (::ReadingValDoIf($hash,'Set_tmp_value','cmd_device_flg') eq "true") && (::ReadingValDoIf($hash,'Set_tmp_value','cmd_value_flg') eq "true")
do:
0:
0 set [Set_tmp_value:cmd_device] [Set_tmp_value:cmd_value]
1 setreading Set_tmp_value cmd_out [Set_tmp_value:cmd_device] [Set_tmp_value:cmd_value]
1:
0
helper:
DEVFILTER ^global$|^Set_tmp_value$
NOTIFYDEV global|Set_tmp_value
event cmd_value_flg: true
globalinit 1
last_timer 0
sleeptimer -1
timerdev Set_tmp_value
timerevent cmd_value_flg: true
triggerDev Set_tmp_value
timerevents:
cmd_value_flg: true
cmd_out: SW_Bettlicht Dimmer 21
timereventsState:
cmd_value_flg: true
cmd_out: SW_Bettlicht Dimmer 21
triggerEvents:
cmd_value_flg: true
cmd_out: SW_Bettlicht Dimmer 21
triggerEventsState:
cmd_value_flg: true
cmd_out: SW_Bettlicht Dimmer 21
internals:
perlblock:
readings:
all Set_tmp_value:cmd_device_flg Set_tmp_value:cmd_value_flg
trigger:
uiState:
uiTable:
Attributes:
DbLogExclude .*
alias SEND_SET_cmd
event-on-change-reading .*
room Logik
/code]
List des notify:
[code]Internals:
DEF Set_tmp_value:cmd_value_flg.*
{
my $str1 = ReadingsVal ("Set_tmp_value", "cmd_device", "");
my $str2 = ReadingsVal ("Set_tmp_value", "cmd_value", "");
my $str = ($str1.' '.$str2);
fhem ("set SW_Bettlicht $str");
fhem ("setreading Set_tmp_value cmd_out $str");
}
FUUID 61baca4a-f33f-cb6b-8d2f-d397b3e5bb43a3f1
FVERSION 91_notify.pm:0.252310/2021-11-15
NAME ssc.not
NOTIFYDEV Set_tmp_value
NR 491
NTFY_ORDER 50-ssc.not
REGEXP Set_tmp_value:cmd_value_flg.*
STATE inactive
TRIGGERTIME 1639638113.68538
TYPE notify
READINGS:
2021-12-16 08:03:59 state inactive
2021-12-16 08:01:53 triggeredByDev Set_tmp_value
2021-12-16 08:01:53 triggeredByEvent cmd_value_flg: true
Attributes:
DbLogExclude .*
alias ssc.not
event-on-change-reading .*
room Logik
verbose 5
Jetzt kommt das Große ABER.
Sobald ich jetzt versuche im EVENT Monitor das Ereignis zu triggern(ich drücke den Button welcher folgenden Inhalt an den ChatBot sendet [ "value": "TH_Buero desired-temp",]
Erhalte ich im Browser Fenster einen FHEM disconnect für 5 sec. und auch keine Event Information.
Auch wird nichts ins Log geschrieben.
Ich bin etwas verwirrt was hier Fhem so blockiert.
Das macht es schwierig jetzt einzugrenzen ob es DOIF, notify, SSChatBot ist welcher dies verursacht.
UPDATE:
ich bin irretiert.... Nach einem Neustart des Docker und senden einer Wunschteperatur via o.g Struktur, wurde nach ca. 1min Laufzeit, die gewünschte Temp. im Device auch übernommen.
Das hatte ich so seit Gestern nicht gesehen.
Aber wie gesagt, was ich völlig komische finde ist der Lost Connect im "eventMonitor" Fenster in Fhem.
VG denny
Zitat von: DS_Starter am 29 November 2021, 17:33:54
Meine Synology ist übrigens nicht im Internet zu erreichen, sondern auschließlich via VPN.
Wie nutzt du dann zuverlässig den Chat?
ich gehe davon aus, dass Heiko dazu dauerhaft die VPN Verbindung Seitens der mobilen Endgeräte oder Rechner dazu herstellt.
Nutzt Du den VPN Server der Syno? oder den z.B einer FritzBox?
Ich habe bei mir beide VPN Varianten am Android und IPhone Devices dazu aktiv.
VG denny
Keine Fritzbox. Unifi.
Mir geht es um die Zuverlässigkeit. VPN bricht in Deutschland schonmal ab, niemand merkt es und es kommen keine Nachrichten.
Okay... Kann ich zwar nicht nachvollziehen aber die VPn Client's verbinden sich doch neu in der Regel!
Zumindest bei mir.
Habe VPNCilla und OPENVPN im Einsatz als Client auf IPhone | Windows | Android....
Gehst Du über dyndns?
Vg Denny
Hallo Marvin,
ZitatWie nutzt du dann zuverlässig den Chat?
Ich nutze die QuickConnect ID über Synology. Das bedarf keiner Portöffnung von außen.
@Denny,
Zitat
Erhalte ich im Browser Fenster einen FHEM disconnect für 5 sec. und auch keine Event Information.
....
Ich bin etwas verwirrt was hier Fhem so blockiert.
Die Meldung bezieht sich auf die FHEMWEB Verbindung. Es wird nichts blockiert, nur FHEMWEB hat in dem
Moment keine Verbindung zum FHEM Server bzw. hat diese abbaut. Deshalb siehst du auch keine Events etc.
Aber der Befehl wird im Server ausgeführt.
Ich kann mir jetzt nicht vorstellen woran das liegen könnte in diesem Kontext.
Erster Tipp wäre mal einen Standard Style (f11) im FHEMWEB zu verwenden um ein evtl. Problem an dieser Stelle auszuschließen.
Grüße,
Heiko
Zitat von: DS_Starter am 16 Dezember 2021, 20:38:59
Hallo Marvin,
Ich nutze die QuickConnect ID über Synology. Das bedarf keiner Portöffnung von außen.
Stimmt. Aber es geht dann doch wieder über eine Cloud, von der man abhängig ist. Zugegeben etwas weniger, als bei Alternativen, wie Telegram und Co.
ZitatAber es geht dann doch wieder über eine Cloud, von der man abhängig ist.
Stimmt auch wieder. ;)
Allerdings habe ich mit openVPN, welches ich ebenfalls auf den Mobildevices nutze, gute Erfahrungen gemacht.
In den Einstellungen gibt es unter "Connection Timeout" den Schalter "Continously retry", sodass immer wieder versucht wird eine Verbindung herzustellen.
Mein Mailplus login läuft über VPN. Das Login vom Chat brauche ich einfach nur umzustellen.
Das mache ich mal ...
Aber warum machst du alles via vpn? Ich habe z.b eine feste IP und bei Strato eine Domain... Alles dann via https / SSL auf 443. Mailserver / etc ...
ZitatAber warum machst du alles via vpn? Ich habe z.b eine feste IP und bei Strato eine Domain...
Naja weil ich so wenig wie möglich externe Dienste einbinden möchte. VPN erschien mir der komfortabelste Weg dazu (für mich). Und funktioniert ja auch tadellos mit dem VPN-Server der Syno.
Aber das wird jetzt OT für SSChatBot. ;)
Nicht OT: Ich habe beim Chatbot ständig Timeouts, wenn ich etwas aus FHEM sende (oder abfrage). Das Versenden einer Nachricht dauert rund 45 Sekunden (timeout steht auf 60). Kein Problem in die Gegenrichtung. Keine Verzögerung messbar. Gibt es hier ähnliche Erfahrungen?
Zur Einordnung: Die RS 1221+ langweilt sich. 32GB RAM bekomme ich nichtmal mit vielen VMs voll. Alle anderen Dienste, wie Surveillance und Co. zeigen, auch im Zusammenhang mit FHEM und deinen Modulen, keine solchen Sympthome.
Beispiel-Reverse-Log
2021.12.17 08:39:38.140 2: DeepThoughtChatBot - ERROR - "chatUserlist" SendQueue index "1" not executed. Restart SendQueue in 5 s (retryCount 1).
2021.12.17 08:39:38.126 2: DeepThoughtChatBot - ERROR message: read from https://10.1.10.10:5001 timed out
2021.12.17 08:39:34.416 3: DeepThoughtChatBot - SSChatBot "DeepThoughtChatBot" for URL /outchat registered
2021.12.17 08:39:34.416 4: DeepThoughtChatBot - Operation "chatUserlist (idx: 1)" is still running. Next operation start postponed
};
'channel' => ''
'retryCount' => 0,
'userid' => '',
'fileUrl' => '',
'attachment' => '',
'method' => 'user_list',
'text' => '',
'opmode' => 'chatUserlist',
$VAR1 = {
2021.12.17 08:39:34.415 5: DeepThoughtChatBot - Add Item to queue - Index 1:
2021.12.17 08:39:18.115 4: DeepThoughtChatBot - Call-Out: https://10.1.10.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=user_list&token="<secret>"
2021.12.17 08:39:18.115 5: DeepThoughtChatBot - HTTP-Call will be done with httptimeout: 20 s
2021.12.17 08:39:18.115 4: DeepThoughtChatBot - start SendQueue entry index "1" (chatUserlist) for operation.
2021.12.17 08:39:18.114 4: DeepThoughtChatBot - botToken read from RAM: ********
2021.12.17 08:39:18.114 4: DeepThoughtChatBot - API hashvalues already set - ignore get apisites
2021.12.17 08:39:18.114 4: DeepThoughtChatBot - ####################################################
2021.12.17 08:39:18.114 4: DeepThoughtChatBot - ### start Chat operation chatUserlist
2021.12.17 08:39:18.114 4: DeepThoughtChatBot - ####################################################
Kann ich bei mir nicht bestätigen. Läuft mit dem Default timeout und sehr schnell in der Kommunikation.
Aber wir hatten das schon mal thematisiert. Schau mal unter #165 ff.
Hier ein Test zum Vergleich (einfacher Textversand FHEM-> Chatserver)
2021.12.17 13:09:39.768 5: SynChatBot - Add Item to queue - Index 6:
{
'attachment' => '',
'userid' => 4,
'channel' => '',
'method' => 'chatbot',
'text' => 'test',
'opmode' => 'sendItem',
'retryCount' => 0,
'fileUrl' => ''
}
2021.12.17 13:09:39.769 4: SynChatBot - ####################################################
2021.12.17 13:09:39.770 4: SynChatBot - ### start Chat operation sendItem
2021.12.17 13:09:39.770 4: SynChatBot - ####################################################
2021.12.17 13:09:39.770 4: SynChatBot - API hashvalues already set - ignore get apisites
2021.12.17 13:09:39.771 4: SynChatBot - botToken read from RAM: ********
2021.12.17 13:09:39.771 4: SynChatBot - start SendQueue entry index "6" (sendItem) for operation.
2021.12.17 13:09:39.772 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2021.12.17 13:09:39.772 4: SynChatBot - Call-Out: http://192.168.2.10:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "test","user_ids": [4]}
2021.12.17 13:09:40.073 5: SynChatBot - JSON returned: {
'data' => {
'fail' => undef,
'succ' => {
'user_id_post_map' => {
'4' => '68719495823'
}
}
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
2021.12.17 13:09:40.081 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "6" deleted.
Naja. Wie gesagt. Die RS langweilt sich. Alle anderen Antwortzeiten sind sagenhaft schnell.
Ich gehe also von einem Problem mit Synology Chat aus.
Zitat von: Wiesel am 29 November 2021, 14:45:18
der Übeltäter scheint das "permission denied" zu sein. In der Datei "/tmp/login_fail.list" ist meine öffentliche IP (+ kryptische zeichen) enthalten.
Das ist ein guter Hinweis. Sobald ein Eintrag in dieser Datei ist bzw. die Datei vorhanden ist (tatsächlich egal, was für ein Eintrag es ist), ist die Antwortzeit unterirschisch. Welches Tool schreibt Einträge dorthin? Das muss ich mal rausfinden. Der gewöhnliche fail2ban der Syno ist es offenbar nicht.
Eine andere Frage.
Der TelegramBot gibt einem die Möglichkeit, Nachrichten zu ändern bzw. zu löschen, wenn sie schon versendet sind.
Beispielanwendungen:
- Versenden von Wifi-QR-Code - man möchte nicht, dass der länger als x Sekunden angezeigt wird
- Tür öffnen ja/nein: Auch hier sollten die Schaltflächen nicht länger als x Sekunden sichtbar sein um zu verhindern, dass sie versehentlich zu einem falschen Zeitpunkt betätigt werden
Gibt das die API her?
Morgen Marvin,
wegen der Datei "/tmp/login_fail.list" könntest du evtl. eine Message an den Support schreiben.
Bei mir hat diese Datei z.Z. einen einzigen (nicht lesbaren) Eintrag. Hat aber keine erkennbaren negativen Performanceauswirkungen.
ZitatGibt das die API her?
Syno hat für den ChatServer keine API-Doku veröffentlicht. Es gibt lediglich eine Beschreibung zur Integration unter https://kb.synology.com/de-de/DSM/help/Chat/chat_integration?version=6.
Das ist die Grundlage für das Modul. Sollte dir/mir/uns eine komplette API-Beschreibung auffallen .... gerne mal den Finger heben.
PS: die sonstigen (kompletten) API-Dokus findet man hier: https://www.synology.com/de-de/support/developer#tool
Grüße,
Heiko
Hallo zusammen und DANKE an DS_Starter fürs Modul,
bin gerade dabei von Telegram umzuziehen. Der WMann hat ne Diskstation gebracht :D
Mich Stört aktuell noch die 30 Sekunden die vergehen bis die Meldung ankommt, ist auch egal ob ich http oder https mache.
2022.01.02 09:54:25 5: SynChatBot - Add Item to queue - Index 14:
$VAR1 = {
'method' => 'chatbot',
'attachment' => '',
'fileUrl' => '',
'retryCount' => 0,
'userid' => 4,
'text' => 'Hallo das ist ein Test',
'channel' => '',
'opmode' => 'sendItem'
};
2022.01.02 09:54:25 4: SynChatBot - ####################################################
2022.01.02 09:54:25 4: SynChatBot - ### start Chat operation sendItem
2022.01.02 09:54:25 4: SynChatBot - ####################################################
2022.01.02 09:54:25 4: SynChatBot - API hashvalues already set - ignore get apisites
2022.01.02 09:54:25 4: SynChatBot - botToken read from RAM: ********
2022.01.02 09:54:25 4: SynChatBot - start SendQueue entry index "14" (sendItem) for operation.
2022.01.02 09:54:25 5: SynChatBot - HTTP-Call will be done with httptimeout: 60 s
2022.01.02 09:54:25 4: SynChatBot - Call-Out: http://192.168.5.5:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Hallo das ist ein Test","user_ids": [4]}
2022.01.02 09:54:55 5: SynChatBot - JSON returned: $VAR1 = {
'data' => {
'succ' => {
'user_id_post_map' => {
'4' => '34359738399'
}
},
'fail' => undef
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
};
2022.01.02 09:54:55 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "14" deleted.
2022.01.02 10:05:27 5: SynChatBot - Add Item to queue - Index 3:
$VAR1 = {
'retryCount' => 0,
'fileUrl' => '',
'method' => 'chatbot',
'attachment' => '',
'text' => 'Hallo das ist ein Test mit https',
'opmode' => 'sendItem',
'channel' => '',
'userid' => 4
};
2022.01.02 10:05:27 4: SynChatBot - ####################################################
2022.01.02 10:05:27 4: SynChatBot - ### start Chat operation sendItem
2022.01.02 10:05:27 4: SynChatBot - ####################################################
2022.01.02 10:05:27 4: SynChatBot - API hashvalues already set - ignore get apisites
2022.01.02 10:05:27 4: SynChatBot - botToken read from RAM: ********
2022.01.02 10:05:27 4: SynChatBot - start SendQueue entry index "3" (sendItem) for operation.
2022.01.02 10:05:27 5: SynChatBot - HTTP-Call will be done with httptimeout: 60 s
2022.01.02 10:05:27 4: SynChatBot - Call-Out: https://192.168.5.5:8443/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Hallo das ist ein Test mit https","user_ids": [4]}
2022.01.02 10:05:57 5: SynChatBot - JSON returned: $VAR1 = {
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'data' => {
'succ' => {
'user_id_post_map' => {
'4' => '34359738400'
}
},
'fail' => undef
}
};
2022.01.02 10:05:57 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "3" deleted.
Richtung SSChat --> FHEM ist es sofort da.
Das ist doch bestimmt ein Problem bei meiner Infrastruktur oder Einstellung auf der Diskstation. Habt ihr Tips für mich?
PS: Fhem(192.168.6.20 Debian Linux 11) und die Diskstation(192.168.5.5 DSM 7.0.1-42218) sind nicht im selben Subnet. Dazwisch hängt ne Sophos FW. Den Timeout musste ich auch hochdrehen sonst kam nur Error Meldung
Da war es aber ein netter Weihnachtsmann. :)
Lies dir mal weiter vorn die Beiträge ab #166 durch. Der User Wiesel hatte ein ähnliches Prob und auch einen Lösungsweg.
Möglicherweise ein Prob mit DSM 7. Ich habe aus verschiedenen Gründen weiterhin DSM 6.
Evtl. auch eine Mitteilung an Syno aufmachen wenn die Ursache genauso wie bei Wiesel ist.
LG,
Heiko
Hi Heiko,
Danke für die schnelle Antwort und schande über mich das hätte ich auch selber finden können soviel Seiten sind es ja noch nicht.
MailPlus hab ich am laufen nutze ich auch. Ein Stop der beiden Dienste für MailPlus hat bei mir leider keine Besserung gebracht.
Hab jetzt auch noch ein Ticket bei Synology auf gemacht. Mal schauen ob ich die gleiche Info mit verwies auf die DSM7.1 bekomme.
Oder ob der Supporter den ich erwische ein workaround hat.
Ich lasse es euch wissen.
LG Benny
Ja interessiert mich auch. Mailplus nutze ich auch und bei läufts schnell und flüssig.
Du kannst dem support den Logauszug mit dem call out string geben. Da sieht man ja auch die Zeit.
Lg,
Jeiko
Lösche doch mal die Datei
/tmp/login_fail.list
Sofern vorhanden.
nach löschen der login_fail.list geht es wie es soll, die Frage ist nur wie lange
2022.01.02 12:39:17 5: SynChatBot - Add Item to queue - Index 11:
$VAR1 = {
'attachment' => '',
'method' => 'chatbot',
'fileUrl' => '',
'retryCount' => 0,
'userid' => 4,
'channel' => '',
'opmode' => 'sendItem',
'text' => 'test mit löschen der login_fail_list'
};
2022.01.02 12:39:17 4: SynChatBot - ####################################################
2022.01.02 12:39:17 4: SynChatBot - ### start Chat operation sendItem
2022.01.02 12:39:17 4: SynChatBot - ####################################################
2022.01.02 12:39:17 4: SynChatBot - API hashvalues already set - ignore get apisites
2022.01.02 12:39:17 4: SynChatBot - botToken read from RAM: ********
2022.01.02 12:39:17 4: SynChatBot - start SendQueue entry index "11" (sendItem) for operation.
2022.01.02 12:39:17 5: SynChatBot - HTTP-Call will be done with httptimeout: 60 s
2022.01.02 12:39:17 4: SynChatBot - Call-Out: https://192.168.5.5:8443/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "test mit löschen der login_fail_list","user_ids": [4]}
2022.01.02 12:39:17 5: SynChatBot - JSON returned: $VAR1 = {
'data' => {
'fail' => undef,
'succ' => {
'user_id_post_map' => {
'4' => '34359738408'
}
}
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
};
2022.01.02 12:39:17 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "11" deleted.
Das ist dann aber eine wichtige Info für den Syno Support !
Dann sollten die Kollegen gleich wissen wo sich das Prob verstecken könnte.
Das hab ich auch so gesehen und über den Syno Account im Ticket nachgetrgen mit dem Logauszug
Reproduzierbarkeit ist auch gegeben.
löscht man die rm login_fail.list geht es 1A.
Wenn man sich dann extra falsch an der DSM anmeldet wird die Datei wieder angelegt und sofort sind die 30 Sekunden wieder da.
Es ist auch egal welche IP in der login_fail steht ob Intern oder Extern, sobald die Datei da ist wird es langsam.
Zitat von: benz_freak am 02 Januar 2022, 13:20:39
Reproduzierbarkeit ist auch gegeben.
löscht man die rm login_fail.list geht es 1A.
Wenn man sich dann extra falsch an der DSM anmeldet wird die Datei wieder angelegt und sofort sind die 30 Sekunden wieder da.
Es ist auch egal welche IP in der login_fail steht ob Intern oder Extern, sobald die Datei da ist wird es langsam.
Deckt sich mit meiner Beobachtung. Ich lösche die Datei als Workaround nun alle paar Sekunden.
Zitat von: DS_Starter am 12 Juli 2020, 20:34:15
Nein, das ist auch nicht nötig. Es ist eigentlich nur eine Hilfe für den User, der im normalen Umfeld den dort stehenden String einfach nur als "Ausgehende URL" bei der ChatBot-Einbindung reinkopieren muss.
Du müsstest also bei dir in der ChatBot Einbindung (in den Client-Einstellungen) anstatt dem String aus OUTDEF eine angepasste Adresse eintragen. D.h. in "Ausgehende URL".
Wenn ich mich jetzt nicht täusche müsste es so passen:
http://192.168.178.92:8085/sschat/outchat?botname=synoChatBot&fwcsrf=5f0ab6c5
Woher das Modul "fhem.fritz.box:8082" nimmt, erschließt sich mir momentan nicht.
EDIT: Es gibt allerdings auch einen Fall, in dem ich OUTDEF auswerte zur Versendung von SVG-Grafiken. In diesem Fall bin ich darauf angewiesen, dass OUTDEF mit den tatsächlichen Gegebenheiten übereinstimmt. Wenn also meine Vermutung richtig ist, braucht man wahrscheinlich doch eine manuelle Anpassungsmöglichkeit falls die automatische Adressermittlung in Docker nicht funktioniert.
Hallo Heiko,
ich habe in den letzten Tagen mein FHEM erfolgreich auf meine Synology in einem Docker Container umgezogen. Soweit läuft alles, inklusive dem SSChatBot.
Einzig der Versand von Grafiken funktioniert nicht, da das Device immer versucht über die Adresse im "OUTDEF" auf die Grafik zuzugreifen, was aber nicht gehen kann (http://fhem.fritz.box:8082/sschat/outchat?botname=SynChatBot&fwcsrf=...). Von daher würde ich mich sehr freuen wenn es eine Möglichkeit geben könnte den Pfad des Feldes "OUTDEF" manuel anpassen zu können.
Vielen Dank vorab.
Gruß, Thomas
Hallo Thomas,
schaue ich mir gerne an.
(Oh man, schon lange nichts mehr am ChatBot geändert).
LG
Hallo Thomas,
ich habe dir eine Testversion in mein contrib geladen.
Es enthält die Attribute spareHost, sparePort um die ermittelten Werte in OUTDEF übershreiben zu können.
Probiers mal aus.
Nach dem Laden des Moduls aus dem contrib ist ein Restart notwendig.
Grüße,
Heiko
Hallo Heiko, das ging aber schnell. Vielen Dank!
Ich habe das eben mal aucf die Schnelle getestet, geht aber leider nicht. Hier die Ausgabe:
2023.01.15 14:52:26 5 : SynChatBot - Add Item to queue - Index 12:
$VAR1 = {
'fileUrl' => 'http://192.168.178.33:8082/sschat/www/images/SynChatBot_SendPlot.png?%26fwcsrf=60e82061',
'channel' => '',
'attachment' => '',
'userid' => 3,
'method' => 'chatbot',
'opmode' => 'sendItem',
'text' => 'aktuelles Plotfile',
'retryCount' => 0
};
2023.01.15 14:52:26 4 : SynChatBot - ####################################################
2023.01.15 14:52:26 4 : SynChatBot - ### start Chat operation sendItem
2023.01.15 14:52:26 4 : SynChatBot - ####################################################
2023.01.15 14:52:26 4 : SynChatBot - API hashvalues already set - ignore get apisites
2023.01.15 14:52:26 4 : SynChatBot - botToken read from RAM: ********
2023.01.15 14:52:26 4 : SynChatBot - start SendQueue entry index "12" (sendItem) for operation.
2023.01.15 14:52:26 5 : SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2023.01.15 14:52:26 4 : SynChatBot - Call-Out: https://192.168.178.33:443/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "aktuelles Plotfile","file_url": "http://192.168.178.33:8082/sschat/www/images/SynChatBot_SendPlot.png?%26fwcsrf=60e82061","user_ids": [3]}
2023.01.15 14:52:31 5 : SynChatBot - JSON returned: $VAR1 = {
'error' => {
'code' => 117
},
'success' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
};
2023-01-15 14:52:31 SSChatBot SynChatBot Error: illegal file name or path
2023-01-15 14:52:31 SSChatBot SynChatBot Errorcode: 117
2023-01-15 14:52:31 SSChatBot SynChatBot Error
2023.01.15 14:52:31 2 : SynChatBot - ERROR - Operation sendItem was not successful. Errorcode: 117 - illegal file name or path
2023.01.15 14:52:31 2 : SynChatBot - ERROR - "sendItem" SendQueue index "12" not executed. It seems to be a permanent error. Exclude it from new send attempt !
2023.01.15 14:52:31 4 : SynChatBot - ####################################################
2023.01.15 14:52:31 4 : SynChatBot - ### start Chat operation
2023.01.15 14:52:31 4 : SynChatBot - ####################################################
2023.01.15 14:52:31 4 : SynChatBot - Only entries with "forbidSend" are in Sendqueue. Escaping ...
Das Bild wird wie angegeben im Verzeichnis "fhem/www/images" erzeugt. Wenn ich die genrierte Link-Adresse im Browser aufrufe wird das *.png auch angezeigt.
Ich teste das in den kommenden Tagen noch mal ein wenig ausführlicher, evtl. habe ich ja noch irgendwo einen Fehler.
Viele Grüße und noch einen schönen Sonntag.
Thomas
Was passiert denn wenn du manuell das File im Browser ausfrufst ?
Steht ja da :o
Das wird angezeigt. Hatte ein Bild vom Aufruf in meinem anderen Post angehängt.
Mach mal bitte ein List deine SSChatBot Devices.
Bitteschön:
Internals:
DEF chat.domainname.de 443 https
FUUID 63bbe490-f33f-4183-7194-3797b5c158d20aba
FVERSION 50_SSChatBot.pm:v1.13.0-s23250/2020-11-28
FW WEBSSChatBot
INADDR chat.domainname.de
INPORT 443
INPROT https
MODEL ChatBot
NAME SynChatBot
NR 961
OPMODE
OUTDEF http://192.168.178.33:8082/sschat/outchat?botname=SynChatBot&fwcsrf=60e82061
RESEND next planned SendQueue start: immediately by next entry
STATE Error
TOKEN Set
TYPE SSChatBot
eventCount 29
HELPER:
INFIX outchat
PACKAGE main::FHEM::SSChatBot
TOKEN WJW}Y5J:c4NH[4LOWoP7X^oLcQOyg5\dPIymTruwZnCuXn=pZpLy^moRT^XyP`l4fZrme2[4Q6}^
QYy4]\_Iei>F
USERFETCHED 1
VERSION 1.13.0
VERSION_API 1.3.0
VERSION_CTZ unused
VERSION_ErrCodes 1.3.6
VERSION_SMUtils 1.24.3
API:
PARSET 1
EXTERNAL:
MOD no
NAME SYNO.Chat.External
PATH entry.cgi
VER 2
mk 1
INFO:
MOD no
NAME SYNO.API.Info
PATH query.cgi
VER 1
mk 1
USERS:
Adventskalender:
email vorname.nachname@web.de
id 31
nickname nickname
status offline
Annika:
email vorname.nachname@web.de
id 4
nickname
status offline
ChatHans:
email vorname.nachname@web.de
id 21
nickname
status offline
Dominik:
email vorname.nachname@web.de
id 9
nickname
status offline
Eva:
email vorname.nachname@web.de
id 8
nickname
status offline
G�nter:
email vorname.nachname@web.de
id 27
nickname
status offline
Monika:
email vorname.nachname@web.de
id 26
nickname
status offline
Stefan:
email vorname.nachname@web.de
id 3
nickname nickname
status offline
admin:
email
id 2
nickname
status offline
fhem:
email
id 7
nickname
status offline
OLDREADINGS:
READINGS:
2023-01-15 14:52:31 Error illegal file name or path
2023-01-15 14:52:31 Errorcode 117
2023-01-15 14:52:26 QueueLength 6
2023-01-15 14:49:57 sendPostId 81604380753
2023-01-15 14:49:57 sendUserId 3
2023-01-15 14:52:31 state Error
Attributes:
allowedUserForCode Name
allowedUserForGet Name
allowedUserForOwn Name
allowedUserForSet Name
defaultPeer Name
room Chat
spareHost 192.168.178.33
sparePort 8082
verbose 5
Den Domainnamen und die Username habe ich anonymisiert.
Passt alles.
Habe es gerade bei mir probiert. File wird gesendet.
Hier zum Vergleich:
2023.01.15 15:48:04.678 5: SynChatBot - Add Item to queue - Index 6:
{
'channel' => '',
'fileUrl' => 'http://192.168.2.45:8086/sschat/www/images/SynChatBot_SendPlot.png?%26fwcsrf=xxxxxx',
'method' => 'chatbot',
'userid' => 4,
'retryCount' => 0,
'text' => 'aktuelles Plotfile',
'opmode' => 'sendItem',
'attachment' => ''
}
2023.01.15 15:48:04.679 4: SynChatBot - ####################################################
2023.01.15 15:48:04.679 4: SynChatBot - ### start Chat operation sendItem
2023.01.15 15:48:04.680 4: SynChatBot - ####################################################
2023.01.15 15:48:04.680 4: SynChatBot - API hashvalues already set - ignore get apisites
2023.01.15 15:48:04.681 4: SynChatBot - botToken read from RAM: ********
2023.01.15 15:48:04.681 4: SynChatBot - start SendQueue entry index "6" (sendItem) for operation.
2023.01.15 15:48:04.681 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2023.01.15 15:48:04.682 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "aktuelles Plotfile","file_url": "http://192.168.2.45:8086/sschat/www/images/SynChatBot_SendPlot.png?%26fwcsrf=xxxxxxx","user_ids": [4]}
2023.01.15 15:48:08.905 5: SynChatBot - JSON returned: {
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'data' => {
'succ' => {
'user_id_post_map' => {
'4' => '34359741427'
}
},
'fail' => undef
}
}
2023.01.15 15:48:08.923 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "6" deleted.
Hmmm, hast du irgendwelche Zugriffsbeschränkungen auf IP-Adressebene ?
Hallo Heiko,
ich konnte es lösen.
Ich hab mich erinnert das ich schonmal das Prolem hatte aus einem Container die lokale IP der Synology zu erreichen. Ich habe dann mal testweise "localhost" eingetragen und schon gings.
Nochmals vielen Dank für die Erweiterung des Moduls.
Einziges Manko was ich nun noch habe, hat aber nix mit dem Modul zu tun, ist die Anzeige der Grafik.
Ist der Hintergrund hell ist die Grafik komplett lesbar, ist der Hintergrund der Chat App dunkel, kann man die Ränder (Beschriftung) nicht mehr erkennen, da der Bereich dann ebenfalls abgedunkelt ist.
Hast du da evtl. einen Tipp für mich?
Gruß, Thomas
Hallo Thomas,
danke für das Feedback, dann checke ich die V heute Abend ein.
Wegen dem Hintergrund frag doch mal im SVG Forum nach.
Ich schau auch heute Abend mal ob ich dazu etwas im Chat finde.
Grüße,
Heiko
Ist für mich gelöst, siehe hier:
https://forum.fhem.de/index.php/topic,131640.msg1258118.html#msg1258118 (https://forum.fhem.de/index.php/topic,131640.msg1258118.html#msg1258118)
Kann wohl nur in der "plotAsPng" Funktion gelöst werden.
Rudolf Vorschlag ist aber für mich ein gangbarer Weg.
Zitat von: marvin78 am 20 Dezember 2021, 10:54:49Eine andere Frage.
Der TelegramBot gibt einem die Möglichkeit, Nachrichten zu ändern bzw. zu löschen, wenn sie schon versendet sind.
Beispielanwendungen:
- Versenden von Wifi-QR-Code - man möchte nicht, dass der länger als x Sekunden angezeigt wird
- Tür öffnen ja/nein: Auch hier sollten die Schaltflächen nicht länger als x Sekunden sichtbar sein um zu verhindern, dass sie versehentlich zu einem falschen Zeitpunkt betätigt werden
Gibt das die API her?
Ich komme nochmal auf das Thema hier zurück. Ich halte das Löschen von gewissen Nachrichten nach einer gewissen Zeit für extrem wichtig. Wenn ich Nachrichten über die Webanwendung im Chat lösche, wird an entry.cgi folgender Payload übergeben:
post_id: XXXXXXXXXXXX
real_delete: false
api: SYNO.Chat.Post
method: delete
version: 8
@DS_Starter: Meinst du, es wäre möglich, das mal im Modul auszuprobieren und zu übernehmen?
Das schaue ich mir mal an.
Komisch ... ich bekomme keine Mails mehr von meinen abonnierten Threads. ....
LG
Guten Morgen,
@marvin78, ich denke das ist hinzubekommen.
Momentan habe ich allerdings noch keine Idee wo/wie man am Besten die post_id herbekommt die man löschen will.
Wird eine Mitteilung empfangen / versendet, wird die Post ID im Reading recPostId / sendPostId dargestellt.
Ich kann aber keine Liste der noch vorhandenen Post IDs erstellen um daraus eine zum Löschen auswählen zu können.
Ich könnte mir z.Zt. nur vorstellen, dass man als User diese Post ID in einem Freifeld angeben muß, d.h. man muß sie sich nach einem geeigneten Verfahren vorher irgendwie abrufbar speichern um sie später für das Löschen verfügbar zu haben.
Wie siehst du das ?
Grüße,
Heiko
Zitat von: DS_Starter am 08 April 2023, 09:35:16Guten Morgen,
@marvin78, ich denke das ist hinzubekommen.
Momentan habe ich allerdings noch keine Idee wo/wie man am Besten die post_id herbekommt die man löschen will.
Wird eine Mitteilung empfangen / versendet, wird die Post ID im Reading recPostId / sendPostId dargestellt.
Ich kann aber keine Liste der noch vorhandenen Post IDs erstellen um daraus eine zum Löschen auswählen zu können.
Ich könnte mir z.Zt. nur vorstellen, dass man als User diese Post ID in einem Freifeld angeben muß, d.h. man muß sie sich nach einem geeigneten Verfahren vorher irgendwie abrufbar speichern um sie später für das Löschen verfügbar zu haben.
Wie siehst du das ?
Grüße,
Heiko
Die letzte Post-ID müsste ich mir in meiner Automation ohnehin selbst merken. Man müsste sie eben beim Löschen in einem Parameter angeben können. Das Merken würde ich dem User bzw. dessen Skript überlassen. Das passt schon.
Kurzer Zwischenstand ...
Im Prinzip kann ich eine Message nun über das Modul löschen.
Aber es funktioniert momentan nur temporär.
Es ist ein POST Request. In diesem Request müssen unter Anderem ein X-SYNO-TOKEN und ein gültiger Cookie angegeben werden. Beide Parameter sind in der Brower Session verfügbar. Wenn ich diese Daten aus dem Browser "mause" klappt es mit der Löschanforderung.
Mal sehen ob/wie ich da weiterkomme.
LG
Zitat von: DS_Starter am 08 April 2023, 16:19:25Kurzer Zwischenstand ...
Im Prinzip kann ich eine Message nun über das Modul löschen.
Aber es funktioniert momentan nur temporär.
Es ist ein POST Request. In diesem Request müssen unter Anderem ein X-SYNO-TOKEN und ein gültiger Cookie angegeben werden. Beide Parameter sind in der Brower Session verfügbar. Wenn ich diese Daten aus dem Browser "mause" klappt es mit der Löschanforderung.
Mal sehen ob/wie ich da weiterkomme.
LG
Danke für deine Mühe. Würde es per curl funktionieren (ich nehme an, der Token ist dann das größere Problem)? Ich kann aktuell leider nicht selbst testen, da nicht in der Nähe eines brauchbaren Rechners.
OT: Schade ist, dass Synology für sowas so halbgare APIs anbietet. Da gibt es keine echte Konsistenz.
ZitatOT: Schade ist, dass Synology für sowas so halbgare APIs anbietet. Da gibt es keine echte Konsistenz.
Da hast du recht. Gerade für Chat gibt es keine echte API so wie man sie für den Calender oder die Surveillance Station findet.
Ich habe noch etwas weiter geforscht. Meiner Meinung nach geht das Löschen von Posts nur für solche Beiträge die ein echter (eingeloggter) User gepostet hat. Und er kann auch nur seine eigenen Beitrage löschen.
Das bedeutet, ich müsste zunächst das Modul so erweitern, dass es nicht nur als ein Bot agieren kann, sondern als "normaler" User mit Login/Logout Prozeduren usw.
Man müsste demnach die Webanwendung des Chat zumindest in Teilen nachbauen.
Das ist schon eine etwas größere Maßnahme, aber sicher sehr interessant.
Mit curl es wäre sicherlich auch möglich einen Befehl abzusetzen. Aber auch damit hat man das grundsätzliche Problem zunächst ein Login auszuführen um an die benötigten Daten (Cookie, X-SYNO-TOKEN) zu kommen.
LG
Ok. So wichtig ist es dann ggf. auch nicht. Ich überlege gerade, ob ich zumindest den Buttons, die ich eigentlich zeitgesteuert löschen möchte, einen Parameter mitgeben kann, der dafür sorgt, dass er nur einmal verwendet werden kann... Ich habe eine myutils extra für die Kommunikation mit dem Bot, das könnte dort dann überprüft werden. Wenn ich mal Zeit habe, schaue ich mir diesen Weg an.
Hallo in die Runde,
ich gebe noch auf ... aber gehe den Schritt ins Forum. Seit exakt 10 Tagen (habe das schon für meine Suche als Anhaltspunkt genommen) empfange ich in meinem Bot keine Nachrichten mehr.
Die Analysen haben ergeben. Das der richtig Token verwendet wird und ich den folgenden Fehler erhalte. 2023.05.01 16:33:58 4: SeppiChat - Data returned: <html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
Kopieren die URL und führe sie im Browser aus ist alles im Device bekomme ich dann als Antwort:
Error
malformed JSON string received
2023-05-01 16:42:49
Errorcode
9000
2023-05-01 16:42:49
QueueLength
9
2023-05-01 16:33:58
state
Error
2023-05-01 16:42:49
Wobei ich denke das er nur mit dem 400 nichts anfangen kann.
Device bereits neu angelegt etc. Keine Verbesserung und ich habe auch keine Idee mehr.
Danke für Anregungen und Impulse
Ergänzung: Benutze die DSM 7.2 Beta mit dem entsprechenden Chat Beta Modul. Iat vielleicht nicht unwichtig, da ich nicht weiss wie im pm Modul die URL Abfrage läuft. Außerdem passt die Installation der Beta vor ca. 10 Tagen sehr gut zu den LOGS und dem Start der Probleme.
Du kannst davon ausgehen, dass es an dem Dienst auf der Synology liegt. Der Fehler 400 Bad Request kommt vom NGINX auf der Syno der das aufgerufene Ziel nicht ansprechen kann.
Läuft der Chat Server auf der Syno ?
Arbeitest du mit HTTP oder HTTPS ?
Möglicherweise geht nur noch HTTPS.
Mal so nebenbei. Bei Beta-Releases muss man immer mit Problemen rechnen. Würde ich auf meinem Live-System nie machen. Ich selbst bin immer noch auf DSM 6.2.4.
Danke für die Rückmeldung. War auch meine erste Vermutung.
Was mich stutzig macht, ist das Verhalten auf den zwei Wegen. Soll heißen, kopiere ich die URL aus dem Log (inkl. Transparentem Token) geht der Aufruf und erzeugt eine Nachricht. In der internen Kommunikation FHEM —> Synology kommt der Fehler.
Das macht mich stutzig.
BETA-Risiko ist einkalkuliert ;-)
Das ist in der Tat merkwürdig.
Da ich es aber mit meiner Version nicht nachstellen kann, bleiben nur Vermutungen.
Eine wäre noch dass die Syno die IP deines FHEM Servers gesperrt hat. Allerdings käme dann wohl eine anderer Fehlercode.
Kannst ja mal die aufgerufene URL und die Antwort im Log posten (evtl. PN). Vllt. fällt mir etwas auf.
Einen schönen Nachmittag!
Ich habe heute den Fehler gemacht und meine Synology auf den ReleaseCandidate DSM 7.2-64551 upgedated. Seither funktioniert leider das Senden Nachrichten aus FHEM an den SynoChatBot nicht mehr. Synology unterstützt in dieser Version Node.js v11 nicht mehr, vielleicht die Ursache...?
Anbei das LOG:
2023.05.05 13:29:16 4: SynChatBot - ####################################################
2023.05.05 13:29:16 4: SynChatBot - ### start Chat operation sendItem
2023.05.05 13:29:16 4: SynChatBot - ####################################################
2023.05.05 13:29:16 4: SynChatBot - API hashvalues already set - ignore get apisites
2023.05.05 13:29:16 4: SynChatBot - botToken read from RAM: ********
2023.05.05 13:29:16 4: SynChatBot - start SendQueue entry index "4" (sendItem) for operation.
2023.05.05 13:29:16 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2023.05.05 13:29:16 4: SynChatBot - Call-Out: https://192.168.0.2:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "test1234","user_ids": [6]}
2023.05.05 13:29:16 4: SynChatBot - Data returned: <html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
Wenn ich die Call-Out URL selbst zusammenbaue (meinen Token einfüge) und in einen Browser kopiere, wird allerdings eine Nachricht an den SynoChatBot geschickt.
Zusätzlich bekomme ich in FHEM folgende Readings:
Error
malformed JSON string received
Errorcode
9000
Vielleicht hätte jemand einen Hinweis für mich? Ich habe bereits die Firewall der Synology abgeschaltet und ein paar mal neu gebooted, ebenso FHEM, leider ohne Erfolg.
Viele Grüße!
Jürgen
Hallo joj, SeppiDeluxe,
möglicherweise müsst ihr im DSM 7.2 etwas einstellen.
Seht euch mal die Seite:
https://www.blackvoid.club/dsm-7-2-public-beta-is-live/
an. Es gibt einen Abschnitt "New notification options". Schaut das mal durch, könnte sein dass dort unter "webhook" das Chat ausgewählt werden muss.
Ansonsten bliebe noch der Weg den Synology Support anzuschreiben. Möglicherweise gibt es Änderungen die in das Modul einfließen müssten. Kann mir aber nicht vorstellen was es sein sollte wenn ich eure Meldungen lese.
Hallo DS_Starter,
besten Dank für den Hinweis, ich melde mich, falls ich hier weiterkomme...!
Beste Grüße!
Hallo DS_Starter,
ich bin bis dato nicht wirklich weitergekommen, Zeit ist Luxus... ;)
Ich habe zumindest auf meiner Syno das AccessLogging für nginx aufgedreht und habe folgende Zeile gesehen, wenn FHEM an den SynoChatBot etwas schickt...
IP-FHEM-SERVER - - [12/May/2023:10:27:14 +0200] "GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token=\x22HIER-STEHT-DER-TOKEN\x22&payload={\x22text\x22: \x22test123\x22,\x22user_ids\x22: [6]} HTTP/1.0" 400 150 "-" "-" "-"
Zum Vergleich die URL aus dem FHEM-VerboseLog:
https://IP-DER-SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="HIER-STEHT-DER-TOKEN"&payload={"text": "test1234","user_ids": [6]}
Ein Puzzlestück mehr, vielleicht kannst du damit schon etwas anfangen...Jedenfalls vielen Dank!
ZitatZeit ist Luxus..
Wem sagst du das ...
Naja, es ist etwas müßig zu puzzeln und bei der nächsten Gelegenheit wieder auf die Nase zu fallen. (Zeit ist Luxus .. ;) )
Ich werde ein Frage an Synology stellen was geändert wurde bzw. wie der Aufruf angepasst werden muß.
Mal schauen ob/was Syno antwortet.
Evtl. brauche ich noch mehr Infos wenn die Fragen stellen.
LG
Ich habe eure Vorschläge noch nicht vollständig ausgetestet. Was nach wie vor auffällt / funktioniert, ist aus dem FHEM Log (verbose 5) die URL C&P zu übernehmen und im Browser direkt aufzurufen. Die Nachricht geht durch ohne irgendeinen Fehler und erzeugt wie erwartet einen Text im Bot.
Von daher nehme ich an das die Beta irgendwas zwischen dem FHEM Kommandoaufruf und der API moniert. Ich werde heute und morgen noch etwas Zeit reinstecken.
Habe eine Meldung bei Syno aufgemacht ... mal schauen.
LG
Synology hat schon geantwortet und würde sich das Ganze mal auf dem System anschauen wollen:
ZitatHello Mr. Maaz,
Thank you for contacting Synology Technical Support.
Please allow us to remotely access the affected NAS.
During the remote access, we will investigate what is triggering the behavior.
For a description of how to enable remote access and how to securely share the data with us, please refer to the separate form you received.
Please note:
To protect the privacy of our customers, all submitted remote access information is automatically deleted after the ticket is resolved.
Also, the remote access settings on your Synology product will be automatically disabled after a certain period of time.
Please let us know if you have any concerns about sharing this access with us.
Mit freundlichen Grüßen / Best Regards,
Wolfgang Maier
Technical Support Engineer
Nun ist es für mich nicht möglich, da ich ja noch auf DSM 6 bin.
Würde sich einer von euch dafür engagieren ?`
Wenn ja, würde ich mit demjenigen mal telefonieren (oder PM) um das Vorgehen abzusprechen.
LG,
Heiko
Guten Morgen,
wenn ihr im Device verbose 5 setzt, kommen im Log auch die detaillierten Informationen von HttpUtils:
2023.05.18 08:08:53.550 4: SynChatBot - ####################################################
2023.05.18 08:08:53.550 4: SynChatBot - ### start Chat operation sendItem
2023.05.18 08:08:53.551 4: SynChatBot - ####################################################
2023.05.18 08:08:53.551 4: SynChatBot - API hashvalues already set - ignore get apisites
2023.05.18 08:08:53.555 4: SynChatBot - botToken read from RAM: ********
2023.05.18 08:08:53.556 4: SynChatBot - start SendQueue entry index "3" (sendItem) for operation.
2023.05.18 08:08:53.556 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2023.05.18 08:08:53.557 4: SynChatBot - Call-Out >GET<: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test","user_ids": [4]}
2023.05.18 08:08:53.558 3: HttpUtils url=https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test","user_ids": [4]} NonBlocking via https
2023.05.18 08:08:53.558 2: IP: 192.168.2.10 -> 192.168.2.10
2023.05.18 08:08:53.591 3: HttpUtils request header:
GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test","user_ids": [4]} HTTP/1.0
Host: 192.168.2.10:5001
User-Agent: fhem
Accept-Encoding: gzip,deflate
Accept: application/json
2023.05.18 08:08:53.690 2: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test","user_ids": [4]}: HTTP response code 200
2023.05.18 08:08:53.691 3: HttpUtils https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test","user_ids": [4]}: Got data, length: 83
2023.05.18 08:08:53.692 3: HttpUtils response header:
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 18 May 2023 06:08:53 GMT
Content-Type: application/json; charset="UTF-8"
Connection: close
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2023.05.18 08:08:53.693 5: SynChatBot - JSON returned: {
'data' => {
'fail' => undef,
'succ' => {
'user_id_post_map' => {
'4' => '34359741618'
}
}
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
2023.05.18 08:08:53.716 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "3" deleted.
Ihr müsst bitte den Token durch "secret" ausblenden.
Vielleicht sieht man dann mehr. Ich könnte mir vorstellen, dass HttpUtils etwas am Call "anpasst" was im Browser nicht gemacht wird und deswegen mit dem Browser Aufruf funktioniert.
Das beantwortet natürlich nicht die Diskrepanz im Verhalten zwischen DSM 6.2 und DSM 7.2.
Also scheinbar unterscheidet sich meine Konf... denn leider erhalte ich in V5 nicht den Umfang
defmod SeppiChat SSChatBot XXX YYY https
attr SeppiChat DbLogExclude .*
attr SeppiChat allowedUserForGet fhemchat
attr SeppiChat allowedUserForOwn fhemchat
attr SeppiChat allowedUserForSet fhemchat
attr SeppiChat defaultPeer fhemchat
attr SeppiChat httptimeout 60
attr SeppiChat room Chat
attr SeppiChat showTokenInLog 0
attr SeppiChat verbose 5
setstate SeppiChat Error
setstate SeppiChat 2023-05-19 10:03:17 Error malformed JSON string received
setstate SeppiChat 2023-05-19 10:03:17 Errorcode 9000
setstate SeppiChat 2023-05-19 10:03:17 QueueLength 656
setstate SeppiChat 2023-05-19 10:03:17 state Error
2023.05.19 10:01:18 4: SeppiChat - ####################################################
2023.05.19 10:01:18 4: SeppiChat - ### start Chat operation sendItem
2023.05.19 10:01:18 4: SeppiChat - ####################################################
2023.05.19 10:01:18 4: SeppiChat - API hashvalues already set - ignore get apisites
2023.05.19 10:01:18 4: SeppiChat - botToken read from RAM: ********
2023.05.19 10:01:18 4: SeppiChat - start SendQueue entry index "2" (sendItem) for operation.
2023.05.19 10:01:18 5: SeppiChat - HTTP-Call will be done with httptimeout: 60 s
2023.05.19 10:01:18 4: SeppiChat - Call-Out: https://synostorage.intranet.lan:20001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "UeberlauffassEntleere Fass wegen Fuellstand größer 90%25","user_ids": [9]}
2023.05.19 10:01:18 3: Audiokonverter: Der Audiokonverter ist an
2023.05.19 10:01:18 4: SeppiChat - Data returned: <html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
2023.05.19 10:01:18 2: SeppiChat - ERROR - "sendItem" SendQueue index "2" not executed. Restart SendQueue in 86400 s (retryCount 296).
Aber ich stimme dir zu das HTTPUTILS möglicherweise bei der Übertragung einen Unterschied "einbauen" im Gegensatz zum Brwoseraufruf.
Ach sorry, ich hatte das Modul schon weiterentwickelt.
Liegt erstmal in meinem Contrib.
Lade des dir bitte und dann nochmal.
Zum Download in der FHEMWEB Kommandozeile inklusive der Anführungszeichen angeben und danach FHEM restarten:
"wget -qO ./FHEM/50_SSChatBot.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/50_SSChatBot.pm"
Zitat&payload={"text": "UeberlauffassEntleere Fass wegen Fuellstand größer 90%25","user_ids"
Ich würde erstmal mit einem simplen Text ohne Sonderzeichen testen.
Hallo DS_Starter,
hatte heute wiedereinmal Zeit. Vielen, vielen Dank für deine Nachforschungen!
Anbei habe ich Logs aus einem WireShark Capture. Einmal von FHEM zur Syno (FHEMtoSYNO) und einmal die Rückantwort (SYNOtoFHEM). Kann es sein, dass beim HTTP-GET die URI abgeschnitten wird?
Siehe Abschnitt "Hypertext Transfer Protocol" im FHEMtoSYNO Log...
Des Weiteren nochmals ein FHEM-LOG Auszug mit Verbose5 am Device aber ich bekomme hier leider nicht mehr Logging, FHEM ist eben aktualisiert worden...
2023.05.19 10:42:18 5: SynChatBot - Add Item to queue - Index 2:
{
'retryCount' => 0,
'opmode' => 'sendItem',
'postid' => undef,
'text' => 'Test1234',
'fileUrl' => '',
'method' => 'chatbot',
'channel' => '',
'userid' => 6,
'attachment' => ''
}
2023.05.19 10:42:18 4: SynChatBot - ####################################################
2023.05.19 10:42:18 4: SynChatBot - ### start Chat operation sendItem
2023.05.19 10:42:18 4: SynChatBot - ####################################################
2023.05.19 10:42:18 4: SynChatBot - API hashvalues already set - ignore get apisites
2023.05.19 10:42:18 4: SynChatBot - botToken read from RAM: ********
2023.05.19 10:42:18 4: SynChatBot - start SendQueue entry index "2" (sendItem) for operation.
2023.05.19 10:42:18 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2023.05.19 10:42:18 4: SynChatBot - Call-Out: https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test1234","user_ids": [6]}
2023.05.19 10:42:18 4: SynChatBot - Data returned: <html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
WireShark-LOG FHEMtoSYNO:
Frame 5: 361 bytes on wire (2888 bits), 361 bytes captured (2888 bits) on interface eth0, id 0
Section number: 1
Interface id: 0 (eth0)
Interface name: eth0
Encapsulation type: Ethernet (1)
Arrival Time: May 19, 2023 10:05:01.402891063 Mitteleuropäische Sommerzeit
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1684483501.402891063 seconds
[Time delta from previous captured frame: 0.003254621 seconds]
[Time delta from previous displayed frame: 0.003254621 seconds]
[Time since reference or first frame: 0.564617715 seconds]
Frame Number: 5
Frame Length: 361 bytes (2888 bits)
Capture Length: 361 bytes (2888 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:tcp:http]
[Coloring Rule Name: HTTP]
[Coloring Rule String: http || tcp.port == 80 || http2]
Ethernet II, Src: Raspberr_d7:1f:2d (dc:a6:32:d7:1f:2d), Dst: Synology_a7:38:6e (00:11:32:a7:38:6e)
Destination: Synology_a7:38:6e (00:11:32:a7:38:6e)
Address: Synology_a7:38:6e (00:11:32:a7:38:6e)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Source: Raspberr_d7:1f:2d (dc:a6:32:d7:1f:2d)
Address: Raspberr_d7:1f:2d (dc:a6:32:d7:1f:2d)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: IP_FHEM, Dst: IP_SYNO
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 347
Identification: 0xdb4c (56140)
010. .... = Flags: 0x2, Don't fragment
0... .... = Reserved bit: Not set
.1.. .... = Don't fragment: Set
..0. .... = More fragments: Not set
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 64
Protocol: TCP (6)
Header Checksum: 0xdcfa [validation disabled]
[Header checksum status: Unverified]
Source Address: IP_FHEM
Destination Address: IP_SYNO
Transmission Control Protocol, Src Port: 57062, Dst Port: 5000, Seq: 1, Ack: 1, Len: 295
Source Port: 57062
Destination Port: 5000
[Stream index: 1]
[Conversation completeness: Complete, WITH_DATA (31)]
[TCP Segment Len: 295]
Sequence Number: 1 (relative sequence number)
Sequence Number (raw): 3280250145
[Next Sequence Number: 296 (relative sequence number)]
Acknowledgment Number: 1 (relative ack number)
Acknowledgment number (raw): 3387464037
1000 .... = Header Length: 32 bytes (8)
Flags: 0x018 (PSH, ACK)
000. .... .... = Reserved: Not set
...0 .... .... = Accurate ECN: Not set
.... 0... .... = Congestion Window Reduced: Not set
.... .0.. .... = ECN-Echo: Not set
.... ..0. .... = Urgent: Not set
.... ...1 .... = Acknowledgment: Set
.... .... 1... = Push: Set
.... .... .0.. = Reset: Not set
.... .... ..0. = Syn: Not set
.... .... ...0 = Fin: Not set
[TCP Flags: ·······AP···]
Window: 502
[Calculated window size: 64256]
[Window size scaling factor: 128]
Checksum: 0x82a3 [unverified]
[Checksum Status: Unverified]
Urgent Pointer: 0
Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps
TCP Option - No-Operation (NOP)
Kind: No-Operation (1)
TCP Option - No-Operation (NOP)
Kind: No-Operation (1)
TCP Option - Timestamps
Kind: Time Stamp Option (8)
Length: 10
Timestamp value: 2439349622: TSval 2439349622, TSecr 12589153
Timestamp echo reply: 12589153
[Timestamps]
[Time since first frame in this TCP stream: 0.003469509 seconds]
[Time since previous frame in this TCP stream: 0.003254621 seconds]
[SEQ/ACK analysis]
[iRTT: 0.000214888 seconds]
[Bytes in flight: 295]
[Bytes sent since last PSH flag: 295]
TCP payload (295 bytes)
Hypertext Transfer Protocol
GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "1234","user_ids": [6]} HTTP/1.0\r\n
[Expert Info (Chat/Sequence): GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "1234","user_ids": [6]} HTTP/1.0\r\n]
[GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "1234","user_ids": [6]} HTTP/1.0\r\n]
[Severity level: Chat]
[Group: Sequence]
Request Method: GET
Request URI: /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text":
Request URI Path: /webapi/entry.cgi
Request URI Query: api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text":
Request URI Query Parameter: api=SYNO.Chat.External
Request URI Query Parameter: version=2
Request URI Query Parameter: method=chatbot
Request URI Query Parameter: token="CHAT_BOT_TOKEN_HERE"
Request URI Query Parameter: payload={"text":
Request Version: "1234","user_ids": [6]} HTTP/1.0
Host: IP_SYNO:5000\r\n
User-Agent: fhem\r\n
Accept-Encoding: gzip,deflate\r\n
Accept: application/json\r\n
\r\n
[Full request URI: http://IP_SYNO:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text":]
[HTTP request 1/1]
[Response in frame: 7]
WireShark-LOG SYNOtoFHEM:
Frame 7: 361 bytes on wire (2888 bits), 361 bytes captured (2888 bits) on interface eth0, id 0
Section number: 1
Interface id: 0 (eth0)
Interface name: eth0
Encapsulation type: Ethernet (1)
Arrival Time: May 19, 2023 10:05:01.403064415 Mitteleuropäische Sommerzeit
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1684483501.403064415 seconds
[Time delta from previous captured frame: 0.000081778 seconds]
[Time delta from previous displayed frame: 0.000081778 seconds]
[Time since reference or first frame: 0.564791067 seconds]
Frame Number: 7
Frame Length: 361 bytes (2888 bits)
Capture Length: 361 bytes (2888 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:tcp:http:data-text-lines]
[Coloring Rule Name: HTTP]
[Coloring Rule String: http || tcp.port == 80 || http2]
Ethernet II, Src: Synology_a7:38:6e (00:11:32:a7:38:6e), Dst: Raspberr_d7:1f:2d (dc:a6:32:d7:1f:2d)
Destination: Raspberr_d7:1f:2d (dc:a6:32:d7:1f:2d)
Address: Raspberr_d7:1f:2d (dc:a6:32:d7:1f:2d)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Source: Synology_a7:38:6e (00:11:32:a7:38:6e)
Address: Synology_a7:38:6e (00:11:32:a7:38:6e)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: IP_SYNO, Dst: IP_FHEM
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 347
Identification: 0xfb18 (64280)
010. .... = Flags: 0x2, Don't fragment
0... .... = Reserved bit: Not set
.1.. .... = Don't fragment: Set
..0. .... = More fragments: Not set
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 64
Protocol: TCP (6)
Header Checksum: 0xbd2e [validation disabled]
[Header checksum status: Unverified]
Source Address: IP_SYNO
Destination Address: IP_FHEM
Transmission Control Protocol, Src Port: 5000, Dst Port: 57062, Seq: 1, Ack: 296, Len: 295
Source Port: 5000
Destination Port: 57062
[Stream index: 1]
[Conversation completeness: Complete, WITH_DATA (31)]
[TCP Segment Len: 295]
Sequence Number: 1 (relative sequence number)
Sequence Number (raw): 3387464037
[Next Sequence Number: 296 (relative sequence number)]
Acknowledgment Number: 296 (relative ack number)
Acknowledgment number (raw): 3280250440
1000 .... = Header Length: 32 bytes (8)
Flags: 0x018 (PSH, ACK)
000. .... .... = Reserved: Not set
...0 .... .... = Accurate ECN: Not set
.... 0... .... = Congestion Window Reduced: Not set
.... .0.. .... = ECN-Echo: Not set
.... ..0. .... = Urgent: Not set
.... ...1 .... = Acknowledgment: Set
.... .... 1... = Push: Set
.... .... .0.. = Reset: Not set
.... .... ..0. = Syn: Not set
.... .... ...0 = Fin: Not set
[TCP Flags: ·······AP···]
Window: 235
[Calculated window size: 30080]
[Window size scaling factor: 128]
Checksum: 0x4b80 [unverified]
[Checksum Status: Unverified]
Urgent Pointer: 0
Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps
TCP Option - No-Operation (NOP)
Kind: No-Operation (1)
TCP Option - No-Operation (NOP)
Kind: No-Operation (1)
TCP Option - Timestamps
Kind: Time Stamp Option (8)
Length: 10
Timestamp value: 12589156: TSval 12589156, TSecr 2439349622
Timestamp echo reply: 2439349622
[Timestamps]
[Time since first frame in this TCP stream: 0.003642861 seconds]
[Time since previous frame in this TCP stream: 0.000081778 seconds]
[SEQ/ACK analysis]
[iRTT: 0.000214888 seconds]
[Bytes in flight: 295]
[Bytes sent since last PSH flag: 295]
TCP payload (295 bytes)
Hypertext Transfer Protocol
HTTP/1.1 400 Bad Request\r\n
[Expert Info (Chat/Sequence): HTTP/1.1 400 Bad Request\r\n]
[HTTP/1.1 400 Bad Request\r\n]
[Severity level: Chat]
[Group: Sequence]
Response Version: HTTP/1.1
Status Code: 400
[Status Code Description: Bad Request]
Response Phrase: Bad Request
Server: nginx\r\n
Date: Fri, 19 May 2023 08:05:01 GMT\r\n
Content-Type: text/html\r\n
Content-Length: 150\r\n
[Content length: 150]
Connection: close\r\n
\r\n
[HTTP response 1/1]
[Time since request: 0.000173352 seconds]
[Request in frame: 5]
[Request URI: http://IP_SYNO:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text":]
File Data: 150 bytes
Line-based text data: text/html (7 lines)
<html>\r\n
<head><title>400 Bad Request</title></head>\r\n
<body>\r\n
<center><h1>400 Bad Request</h1></center>\r\n
<hr><center>nginx</center>\r\n
</body>\r\n
</html>\r\n
Ja schau mal eins weiter oben (#256).
Du must das Modul erst aus meinem contrib ziehen um mehr Logasusgaben zu erhalten.
ZitatKann es sein, dass beim HTTP-GET die URI abgeschnitten wird?
Ja, meine Vermutung richtete sich auf HTTPUTILS (auch weiter oben).
Das sieht komisch aus:
[Full request URI: http://ip_syno:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text":]
...
Request URI Query Parameter: payload={"text":
Request Version: "1234","user_ids": [6]} HTTP/1.0
Allerdings erklärt es nicht den Unterschied zwischn DSM 6.2 und DSM 7.2.
Trotzdem ... nimm die V aus dem contrib und dann sehen wir auch die Calls die httputils rausgibt an die Syno.
Danke, anbei das neue V5 Log...
Beste Grüße!
2023.05.19 11:26:48 5: SynChatBot - Add Item to queue - Index 2:
{
'userid' => 6,
'attachment' => '',
'channel' => '',
'postid' => undef,
'opmode' => 'sendItem',
'text' => 'Test1234',
'method' => 'chatbot',
'fileUrl' => '',
'retryCount' => 0
}
2023.05.19 11:26:48 4: SynChatBot - ####################################################
2023.05.19 11:26:48 4: SynChatBot - ### start Chat operation sendItem
2023.05.19 11:26:48 4: SynChatBot - ####################################################
2023.05.19 11:26:48 4: SynChatBot - API hashvalues already set - ignore get apisites
2023.05.19 11:26:48 4: SynChatBot - botToken read from RAM: ********
2023.05.19 11:26:48 4: SynChatBot - start SendQueue entry index "2" (sendItem) for operation.
2023.05.19 11:26:48 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2023.05.19 11:26:48 4: SynChatBot - Call-Out >GET<: https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test1234","user_ids": [6]}
2023.05.19 11:26:48 3: HttpUtils url=https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test1234","user_ids": [6]} NonBlocking via https
2023.05.19 11:26:48 2: IP: IP_SYNO -> IP_SYNO
2023.05.19 11:26:48 3: HttpUtils request header:
GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test1234","user_ids": [6]} HTTP/1.0
Host: IP_SYNO:5001
User-Agent: fhem
Accept-Encoding: gzip,deflate
Accept: application/json
2023.05.19 11:26:48 2: https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test1234","user_ids": [6]}: HTTP response code 400
2023.05.19 11:26:48 3: HttpUtils https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test1234","user_ids": [6]}: Got data, length: 150
2023.05.19 11:26:48 3: HttpUtils response header:
HTTP/1.1 400 Bad Request
Server: nginx
Date: Fri, 19 May 2023 09:26:48 GMT
Content-Type: text/html
Content-Length: 150
Connection: close
2023.05.19 11:26:48 4: SynChatBot - Data returned: <html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
Ja, danke.
Ich habe exakt den gleichen Text bei mir probiert.
Mein Ergebnis:
2023.05.19 11:33:33.403 2: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test1234","user_ids": [4]}: HTTP response code 200
2023.05.19 11:33:33.404 3: HttpUtils https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test1234","user_ids": [4]}: Got data, length: 83
2023.05.19 11:33:33.405 3: HttpUtils response header:
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 19 May 2023 09:33:33 GMT
Content-Type: application/json; charset="UTF-8"
Connection: close
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
....
Dein Ergebnis:
2023.05.19 11:26:48 2: https://ip_syno:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test1234","user_ids": [6]}: HTTP response code 400
2023.05.19 11:26:48 3: HttpUtils https://ip_syno:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test1234","user_ids": [6]}: Got data, length: 150
2023.05.19 11:26:48 3: HttpUtils response header:
HTTP/1.1 400 Bad Request
Server: nginx
....
Mir sehen die Aufrufe absolut identisch aus.
Stimmt denn dein Port mit 5001 ? Hat sich da bzgl. 7.2 etwas geändert ?
PS: füge deine Ausgaben hier mit Code-Tags ein. Ist besser lesbar.
hmm, sehr komisch...
Die Port-Settings meiner syno sind alle gleich geblieben (hatte vorher DSM 7.1.1-42962-5), ich hatte eben nur den redirect von 5000 auf 5001 weggegeben, damit ich im WireShark mehr sehe, ansonsten spuckt ja HTTPS beim "Debuggen" in die Suppe.... Wenn ich meine/genannte/die selbe URI in einen Browser kopiere funktioniert alles bestes...
Wie gesagt, als ich im Leichtsinn auf DSM7.2RC aktualisierte, fiel mit nur auf, dass node.js v11 rausflog. Im ChangeLog von Synology bzgl. DSM7.2RC dürften sich ein paar "Sicherheitsupdates" für nginx etc. auch dazugesellen... Jedenfalls wars mir (wiedermal eine Lehre) nicht zu schnell auf die neuen DSM zu wechseln...
lg
Ich bin leider auch etwas ratlos.
Könnte mir nur vorstellen, Synology prüft auch noch den User-Agent. Dann wäre "fhem" nicht verständlich. Ist aber nur eine Vermutung.
Inzwischen hat sich Synology wieder gemeldet und würde auch weiter unterstützen:
ZitatHello Mr. Maier,
thank you very much for the quick reply.
....
But other users of our community (FHEM) use my development as well and reported this error after the update to DSM 7.2-64551.
I will ask a user with DSM 7.2-64551 to assist with troubleshooting.
Mit freundlichen Grüßen / Best Regards,
Heiko Maaz
--------------------------------------------------------------------------
Hello Mr. Maaz,
Thank you for your answer.
If I have understood correctly, then it now works again.
If other users have the same kind of problems, they can contact us at any time so that we can analyze the issue and fix the behavior.
Mit freundlichen Grüßen / Best Regards,
Wolfgang Maier
Technical Support Engineer
Ich hatte geschrieben, dass es mit DSM 6.2 (wieder) funktioniert.
D.h. ich schlage euch vor ihr macht eine Meldung bei Syno auf und lasst das Problem remote untersuchen.
Ihr könnt euch dabei auf mein Ticket #3339716 beziehen.
Ich hatte folgendes geschrieben:
I have already developed and successfully run an application for a ChatBot under DSM 6.X for a long time.
The call shown below, which ran without problems under DSM 6.x so far, brings the following error with DSM 7.2-64551:
Call-Out:
https://192.168.0.2:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "test1234","user_ids": [6]}
2023.05.05 13:29:16 4: SynChatBot - Data returned:
<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
The <secret> is the Token in the original Call.
What has been changed or what do I have to adjust in the call if necessary ?
Best regards,
Heiko Maaz
Noch eine Frage.
Wie sendet ihr den String, in einer Zeile oder mit Umbrüchen, Tabulatoren o.ä. ?
Bei mir funktionieren alle Varianten tadellos.
Hi,
das mit dem UserAgent tauchte ja öfters im Forum auf, ich dachte auch schon daran... Kann man den zu Testzwecken in FHEM ändern?
Jedenfalls hab ich zwar die RC installiert, habe aber ungern die Leute von Synoloy auf meiner DS drauf...
Ich hatte vor einiger Zeit einen Call bzgl. "DiskHibernate" bei Synology offen und auch dort ist leider immer die erste Antwort "...gib uns Zugriff auf dein System...".
Jedenfalls danke für deinen Einsatz, ich werde auch einen Call aufmachen, allerdings nicht um die Leute von Synology auf meine DS zu lassen, vielleicht kann man aber bei denen das "Bewusstsein" schärfen, dass mit DSM7.2 noch etwas Arbeit ansteht...
Die URI im Browser schicke ich in einer Zeile, ohne %20 oder %22 aber mit " (Anführungszeichen) für den Token, so wie die URI aus dem FHEM Logging kommt:
https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "test1234","user_ids": [6]}
Aus FHEM schicke ich nur test1234, ohne Umbrüche, Leerzeichen, Tabs o.ä.
Danke & lg!
Kein Problem.
Vielleicht reicht es ja wenn du die Systemlogs mitschickst oder anderweitige Logauszüge die Synology benennen kann.
Das konnte ich ja nicht liefern.
Danke für deine Mitarbeit ! :)
Alles leider nicht so einfach ...
LG
Zitatdas mit dem UserAgent tauchte ja öfters im Forum auf, ich dachte auch schon daran... Kann man den zu Testzwecken in FHEM ändern?
Der ist in HttpUtils.pm hart verdrahtet.
Wenn du HttpUtils.pm in deinen Editor lädst, findest du zwei Stellen wo User-Agent auf fhem gesetzt wird.
Dort könntest du ändern. FHEM muß dann restartet werden.
...besten Dank, habs noch schnell versucht. Wäre zu schön gewesen...
2023.05.19 13:36:58 5: SynChatBot - Add Item to queue - Index 3:
{
'fileUrl' => '',
'userid' => 6,
'postid' => undef,
'channel' => '',
'text' => 'Test',
'opmode' => 'sendItem',
'method' => 'chatbot',
'attachment' => '',
'retryCount' => 0
}
2023.05.19 13:36:58 4: SynChatBot - ####################################################
2023.05.19 13:36:58 4: SynChatBot - ### start Chat operation sendItem
2023.05.19 13:36:58 4: SynChatBot - ####################################################
2023.05.19 13:36:58 4: SynChatBot - API hashvalues already set - ignore get apisites
2023.05.19 13:36:58 4: SynChatBot - botToken read from RAM: ********
2023.05.19 13:36:58 4: SynChatBot - start SendQueue entry index "3" (sendItem) for operation.
2023.05.19 13:36:58 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2023.05.19 13:36:58 4: SynChatBot - Call-Out >GET<: https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Test","user_ids": [6]}
2023.05.19 13:36:58 3: HttpUtils url=https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test","user_ids": [6]} NonBlocking via https
2023.05.19 13:36:58 2: IP: IP_SYNO -> IP_SYNO
2023.05.19 13:36:58 3: HttpUtils request header:
GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test","user_ids": [6]} HTTP/1.0
Host: IP_SYNO:5001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42
Accept-Encoding: gzip,deflate
Accept: application/json
2023.05.19 13:36:58 2: https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test","user_ids": [6]}: HTTP response code 400
2023.05.19 13:36:58 3: HttpUtils https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="CHAT_BOT_TOKEN_HERE"&payload={"text": "Test","user_ids": [6]}: Got data, length: 150
2023.05.19 13:36:58 3: HttpUtils response header:
HTTP/1.1 400 Bad Request
Server: nginx
Date: Fri, 19 May 2023 11:36:58 GMT
Content-Type: text/html
Content-Length: 150
Connection: close
2023.05.19 13:36:58 4: SynChatBot - Data returned: <html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
Schade :(
Auf der Syno gibt es bei mir das Verzeichnis
/var/log/nginx
Dort drin ein File error.log
Schau doch da mal rein.
Also, einen hab ich noch. Ich habe (wir hatten den gleichen Gedanken) nochmals das nginx access-Logging auf der Syno aufgedreht und anbei die Ergebnisse...
Access aus FHEM-ChatBot:
IP_FHEM - - [19/May/2023:14:11:39 +0200] "GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token=\x22CHAT_BOT_TOKEN_HERE\x22&payload={\x22text\x22: \x22testABC\x22,\x22user_ids\x22: [6]} HTTP/1.0" 400 150 "-" "-" "-"
Access von meinem PC aus:
IP_CLIENT_PC - - [19/May/2023:14:18:04 +0200] "GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token=%22CHAT_BOT_TOKEN_HERE%22&payload={%22text%22:%20%22test1234%22,%22user_ids%22:%20[6]} HTTP/2.0" 200 101 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36" "-"
Warum auch immer die Platzhalter für HTML %20 und %22 hier unterschiedlich interpretiert werden...
Die anderen Logs der Syno (error.log und error_default.log) zeichnen nichts auffälliges auf.
Das ist ein Ansatz.
Ich sehe zu vllt. schon heute Abend eine Version zum Test anbieten zu können.
Die Zeichen kann ich im Modul schon umsetzen. Wird normalerweise in httpUtils gemacht.
Habe schon eine Version zum Test in mein contrib gestellt.
Mal probieren ..
Noch eine Frage.
Habt ihr das globale Attr encoding eingestellt ? Wenn ja, wie ?
Zitat von: DS_Starter am 19 Mai 2023, 10:29:33Ich würde erstmal mit einem simplen Text ohne Sonderzeichen testen.
Noch ein Überbleibsel aus der letzten UTF Umstellung im DBConf ;-)
kurzes Update:
Ich bekomme jetzt erstmal das umfangreichere Log.
Encoding ist derzeit noch nicht aktiv (also Standard bytestream nehme ich an) gesetzt.
C&P mit dem Browser funktioniert nach wie vor problemlos.
Hast du die Version aus meinem contrib ausprobiert ?
Poste dann mal bitte das umfangreichere Log.
...habe das attr global encoding ebenfalls nicht gesetzt...
Gute Nachricht, habe mir eben dein neues Modul aus deinem Contrib geholt und siehe da, alles funktioniert wieder bestens! Wahnsinn, vielen Dank!!! Spitzen Arbeit!!!
2023.05.20 15:32:57 5: SynChatBot - Add Item to queue - Index 3:
{
'method' => 'chatbot',
'attachment' => '',
'fileUrl' => '',
'text' => 'Das ist ein Test',
'opmode' => 'sendItem',
'retryCount' => 0,
'channel' => '',
'postid' => undef,
'userid' => 6
}
2023.05.20 15:32:57 4: SynChatBot - ####################################################
2023.05.20 15:32:57 4: SynChatBot - ### start Chat operation sendItem
2023.05.20 15:32:57 4: SynChatBot - ####################################################
2023.05.20 15:32:57 4: SynChatBot - API hashvalues already set - ignore get apisites
2023.05.20 15:32:57 4: SynChatBot - botToken read from RAM: ********
2023.05.20 15:32:57 4: SynChatBot - start SendQueue entry index "3" (sendItem) for operation.
2023.05.20 15:32:57 5: SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2023.05.20 15:32:57 4: SynChatBot - Call-Out >GET<: https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "Das ist ein Test","user_ids": [6]}
2023.05.20 15:32:57 3: HttpUtils url=https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token=%22CHAT_BOT_TOKEN_HERE%22&payload={%22text%22:%20%22Das%20ist%20ein%20Test%22,%22user_ids%22:%20[6]} NonBlocking via https
2023.05.20 15:32:57 2: IP: IP_SYNO -> IP_SYNO
2023.05.20 15:32:57 3: HttpUtils request header:
GET /webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token=%22CHAT_BOT_TOKEN_HERE%22&payload={%22text%22:%20%22Das%20ist%20ein%20Test%22,%22user_ids%22:%20[6]} HTTP/1.0
Host: IP_SYNO:5001
User-Agent: fhem
Accept-Encoding: gzip,deflate
Accept: application/json
2023.05.20 15:32:58 2: https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token=%22CHAT_BOT_TOKEN_HERE%22&payload={%22text%22:%20%22Das%20ist%20ein%20Test%22,%22user_ids%22:%20[6]}: HTTP response code 200
2023.05.20 15:32:58 3: HttpUtils https://IP_SYNO:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token=%22CHAT_BOT_TOKEN_HERE%22&payload={%22text%22:%20%22Das%20ist%20ein%20Test%22,%22user_ids%22:%20[6]}: Got data, length: 84
2023.05.20 15:32:58 3: HttpUtils response header:
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 20 May 2023 13:32:57 GMT
Content-Type: application/json; charset="UTF-8"
Connection: close
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
2023.05.20 15:32:58 5: SynChatBot - JSON returned: {
'data' => {
'fail' => undef,
'succ' => {
'user_id_post_map' => {
'6' => '176093661361'
}
}
},
'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
2023.05.20 15:32:58 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "3" deleted.
Das freut mich. :)
Dann checke ich die Version heute Abend ein.
Bei mir auch alles behoben mit der neuen Ver .. Danke dir