Shop-Wechsel

Der Warenkorb wird nicht übernommen.

Zum Privatkunden Shop

ELV-Insider

CCU2 Script

Beiträge zu diesem Thema: 8
CCU2 Script
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
09.12.2020, 16:43
Hallo,

ich habe ein erstes kleines Script geschrieben für die CCU2 in Verbindung mit BOTAPI Telegramm.

Bei der Eingabe im Homematic Script werden die Befehle vom Script rot unterstrichen.

Die Script Fehlerprüfung bringt aber keine Fehlermeldung. Es folgt mein Script:

string MESSAGE = "Deine Nachricht";
string TOKEN = "Token des Bots";
string CHATID = "Deine ChatID";
string lErsetzen = "Ü;Ä;Ö;ü;ä;ö;ß;°; 2 ; 3 ; ;";
string lErsetzenDurch = "%C3%9C;%C3%84;%C3%96;%C3%BC;%C3%A4;%C3%B6;%C3%9F;%C2%B0;%C2%B2;%C2%B3;%20;";
string lTextNeu = MESSAGE;
integer lPos = 0;
integer lIndex = 0;
string lSplit = "";
boolean lLoop = true;
foreach (lSplit, lErsetzen.Split(";"))
{
lLoop = true;
while (lLoop)
{
lPos = lTextNeu.Find(lSplit);
if (lPos == -1)
{
lLoop = false;
}
else
{
lTextNeu = lTextNeu.Substr(0,lPos) #
lErsetzenDurch.StrValueByIndex(";",lIndex) #
lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) );
}
}
lIndex = lIndex + 1;
}
string stdout;string stderr;
system.Exec("wget --no-check-certificate -q -O - 'https://api.telegram.org/bot"#TOKEN#"/sendMessage?chat_id="#CHATID#"&text="#lTextNeu, &stdout, &stderr);

Da dies mein erstes Script ist habe ich mich vorher eingelesen. Erschreckend ist

- das die Scripte für CCU2 und CCU3 unterschiedlich sein sollen.

- das man system.Exec nicht nutzen soll wegen Fehler

- das nur kurze Messages übertragen werden dürfen

- das die Messages nicht in kurzer Folge gesendet werden können

Ist jemand im Thema drin und kann helfen?

Besten Dank
Aw: CCU2 Script
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
09.12.2020, 20:15
Eine Fehlerbeschreibung wäre hilfreich


"das die Scripte für CCU2 und CCU3 unterschiedlich sein sollen."
Das hast du wo gelesen?


"das man system.Exec nicht nutzen soll wegen Fehler"
Diese Information ist veraltet und schon seit einigen Releases nicht mehr aktuell


"das nur kurze Messages übertragen werden dürfen"
Das liegt wohl dann an dem aufgerufenen Service hier Telegramm


"das die Messages nicht in kurzer Folge gesendet werden können"
Das liegt wohl dann an dem aufgerufenen Service hier Telegramm


Das Script jedenfalls tut seine Arbeit.
Aus
Deine Nachrichtüöä
wird
Deine%20Nachricht%C3%BC%C3%B6%C3%A4


Das ganze Script kann man sich sparen, wenn man <span class="aCOpRe">UriEncode benutzt. Siehe Sprachbeschreibung zu Homematic</span>


Der Fehler kann also nur im wget Aufruf liegen. Den kann ich nicht testen, bezweifle aber, das #TOKEN# usw im wget korrekt ist. Vielmehr dürften dort die Werte hinterlegt werden müssen.

Du solltest

string stdout;string stderr;
system.Exec("wget --no-check-certificate -q -O - 'https://api.telegram.org/bot"#TOKEN#"/sendMessage?chat_id="#CHATID#"&text="#lTextNeu, &stdout, &stderr);

alleine mit der Vorgabe von direkten Werten testen und dann erst das Script vorschalten und nach und nach die Variablen einsetzen
Christian
Aw: CCU2 Script
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
09.12.2020, 20:50
Da du "dein erstes Script" offenbar von hier hast....

https://digitaldad.de/2020/09/07/so-sendet-deine-ccu-dir-telegram-nachrichten-aufs-smartphone/

Jedenfalls läuft der dort für die CCU3 vorgesehene Code

string msg = "Deine Nachricht";
string MESSAGE = msg.ToUTF8().Replace(" ", "%20");
WriteLine(msg);

einwandfrei in der CCU2
Christian
Aw: CCU2 Script
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
10.12.2020, 09:11
Hallo Christian,

bedanke mich für deine Antwort. Da dies mein erstes Script in HomeMatic

ist habe ich ein schon getestetes verwendet. (Syntaxfehler Vermeidung!)

In der Tat blieb noch offen ein falschen Token oder chat_id in System.EXEC()

eingegeben zu haben. Diese beiden Parameter wurden auf den PC kopiert

und mit dem Browser mit

https://api.telegram.org/bot(TOKEN)/sendmessage?chat_id=(CHATID)&text= (TEXT)

ausgegeben. Funktioniert bestens. Message auf Handy Telegram erhalten.



Für mich ist nicht erklärlich wieso bei der Eingabe des Scriptes in der Web UI der CCU2

die Variablen und Befehle rot hinterlegt werden. Dies passiert nur wenn ein Syntaxfehler

oder Adressbereichsüberschreitung usw vorliegt!

In Bezug auf die weiteren Statements, bitte googeln.

Werde weiter testen gemäß Vorschlag.

MfG Hans Joa.
Aw: CCU2 Script
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
10.12.2020, 09:15
https://api.telegram.org/bot(TOKEN)/sendmessage?chat_id=(CHATID)&text= (TEXT)
Im CCU-Script sind da #
Bei mir werden alle funktionierenden Scripte rot hinterlegt....
Das ist meine aktivierte Rechschreibprüfung im Browser....
Christian
Aw: CCU2 Script
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
10.12.2020, 11:29
Hallo Christian,

in der Tat die rote Unterlegung erfolgt durch den Microsoft Browser. Kann

leider nicht deaktiviert werden.

Zum eigentlichen Problem, habe das Script soweit abgemagert das nur noch

String stdout und stderr deklariert und der Befehll System.Exec mit den Parametern blieb.

Testergebnis: kein Fehler und kein Output

CCU2 idle loop and no timeout (Leider kein Dump oder Trace vorhanden)

Resultat: der Befehl System.Exec scheint wohl, wie in den Foren ersichtlich

ist, Probleme zu machen. Beispiele in den Foren verwenden hauptsächlich

CUxD.

Gibt es ein verstecktes Logfile das weitere Hinweise geben könnte

damit mein simples Script zum Laufen kommt?

MfG Hans Joachim
Aw: CCU2 Script
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
10.12.2020, 11:37
Es liegt nicht an dem Befehl. Ich verwende hier viel diesen Befehl Beispielsweise
string stdout;
string stderr;
system.Exec("/opt/jre/bin/java -jar /etc/config/addons/myfritzbox/HomematicFritzbox.jar on 0", &stdout, &stderr);
unter /var/log/messages
werden Fehler angezeigt.
Wie ich schon geschrieben hatt, solltest du nur das system.Exec mit direkter Vorgabe der Werte ohne Variablen testen. Dann nach und nach ersetzen. Als Text eine Zeichenkette ohne Leerzeichen oder diese durch %20 ersetzen
Christian
Aw: CCU2 Script
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
10.12.2020, 14:26
Hallo Christian,

vorab ich habe die Lösung die ich brauch und die funktioniert.

Wie sieht die Lösung aus:

Ich habe ein neues quick and dirty Script aus dem Web getestet.

Skript für die CCU3

<pre class="wp-block-code"><code>string msg = "Deine Nachricht";
string TOKEN = "Token des Bots";
string CHATID = "Deine ChatID";
string MESSAGE = msg.ToUTF8().Replace(" ", "%20");
system.Exec("wget --no-check-certificate -q -O - 'https://api.telegram.org/bot'"#TOKEN#"'/sendMessage?chat_id='"#CHATID#"'&text='"#MESSAGE);

Funktioniert fast zufriedend stellend. Weswegen, es dauerd sehr lange bis die Message auf dem Handy erscheint.
Wer da so lahm ist bleibt dahin gestellt. CCU2, Telecom Netz, Handy App Telegram??
Für die erste CCU2 Script Application reicht es. Weshalb das andere Script nicht funktionierte bleibt offen.

Danke für die Hilfe und
MfG Hans Joachim





</code></pre>