Howto - zentrales Push-Nachrichten-Programm zPNP

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

SMA
Beiträge: 95
Registriert: 16.04.2015, 13:28

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von SMA » 10.12.2017, 19:00

dtp hat geschrieben:
SMA hat geschrieben: Es besteht irgendein Problem mit stopRepeat.
Hab's gerade mit Telegram und Pushover mit nachfolgendem Skript getestet:

Code: Alles auswählen

! Namen der verwendeten Systemvariablen
string svPushText = "CCU SV Push Text"; ! gem. zPNS-xx, obligatorisch

! Name des zentralen Push-Nachrichten-Programms
string zPNP = "CCU PRG Push-Nachrichten"; ! obligatorisch

! +++++ Erzeugen der Test-Nachricht +++++
string message = "<font color=orange>Dies</font> ist eine <font color=green>gewöhnliche</font> Test-Nachricht.";

! +++++ zPNP ausführen +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).State(message);
(dom.GetObject(ID_PROGRAMS).Get(zPNP)).ProgramExecute();

WriteLine("Nachricht gesendet");
Wird es innerhalb der mit stopRepeat definierten Zeitspanne wiederholt, erfolgt keine Nachrichtenübermittlung. Wird es dagegen erst nach Ablauf der Zeitspanne erneut getriggert, erhalte ich die Push-Nachrichten. Wie gesagt, zwischen zwei identischen Nachrichten darf innerhalb der stopRepeat-Zeitspanne keine andere Nachricht gesendet worden sein. Andernfalls erfolgt ein erneutes Senden der Push-Nachricht.
Hallo. Danke für die Rückmeldung!

Also ich habe dein Testskript nun 4x ausgeführt. Zwei mal im Abstand von etwa 5 Sekunden, das dritte mal nach etwa 15 Sekunden, das vierte mal nach 30 Sekunden.

Alle Nachrichten kamen umgehend an! Das heißt, stopRepeat wurde nicht beachtet!

In allen 3 Skripten steht stopRepeat auf 60. Im Einsatz habe ich Telegram (notwendig, wegen Fehler... Bis heute nicht weggegangen), dann kommt Prowl, dann Pushalot (fliegt wohl raus, Service eingestellt wie es scheint), dann das Setzen der Referenz.

Viele Grüße
SMA

EDIT: Auf ein Screenshot vom Telefon verzichte ich an der Stelle mal. Es kamen alle Nachrichten an :-)

Code: Alles auswählen

Nachricht gesendet
svPushText: Gewöhnliche Testnachricht: Terassentür geöffnet!
svPushTextRef: Gewöhnliche Testnachricht: Terassentür geöffnet!
Zeitdifferenz: 279

Nachricht gesendet
svPushText: Gewöhnliche Testnachricht: Terassentür geöffnet!
svPushTextRef: Gewöhnliche Testnachricht: Terassentür geöffnet!
Zeitdifferenz: 4

Nachricht gesendet
svPushText: Gewöhnliche Testnachricht: Terassentür geöffnet!
svPushTextRef: Gewöhnliche Testnachricht: Terassentür geöffnet!
Zeitdifferenz: 12

Nachricht gesendet
svPushText: Gewöhnliche Testnachricht: Terassentür geöffnet!
svPushTextRef: Gewöhnliche Testnachricht: Terassentür geöffnet!
Zeitdifferenz: 17

Nachricht gesendet
svPushText: Gewöhnliche Testnachricht: Terassentür geöffnet!
svPushTextRef: Gewöhnliche Testnachricht: Terassentür geöffnet!
Zeitdifferenz: 31

Code: Alles auswählen

! Namen der verwendeten Systemvariablen
string svPushText = "CCU SV Push Text"; ! gem. zPNS-xx, obligatorisch
string svPushTextRef = "CCU SV Push Text Ref"; ! gem. zPNS-xx, obligatorisch

! Name des zentralen Push-Nachrichten-Programms
string zPNP = "CCU PRG Push-Nachrichten"; ! obligatorisch

! +++++ Erzeugen der Test-Nachricht +++++
string message = "<font color=orange>Dies</font> ist eine <font color=green>gewöhnliche</font> Test-Nachricht.";

! +++++ zPNP ausführen +++++
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).State(message);
(dom.GetObject(ID_PROGRAMS).Get(zPNP)).ProgramExecute();

WriteLine("Nachricht gesendet");
WriteLine("svPushText: " + dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText).Value());
WriteLine("svPushTextRef: " + dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef).Value());
WriteLine("Zeitdifferenz: " + (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).Timestamp().ToInteger() - (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef)).Timestamp().ToInteger())
Zuletzt geändert von SMA am 11.12.2017, 14:39, insgesamt 1-mal geändert.
Privat
1 Kanäle in 1 Geräten und 16 CUxD-Kanäle in 1 CUxD-Geräten:
1x CUX28, 1x HM-Sec-SCo


Ehemalig studentische Projektgruppe
Übersicht des Haus-Projekts (Neubau)
1x CCU2 (Untergeschoss/Stahlbau) || 2x LAN-Gateway (Erdgeschoss/Dachgeschoss)

527 Kanäle in 238 Geräten und 64 CUxD-Kanäle in 17 CUxD-Geräten:
9x HM-Sen-MDIR-O-2, 16x CUX90, 12x HM-LC-Sw2-FM, 18x HM-PB-6-WM55, 33x HM-Sec-SCo, 21x HM-Sec-SD, 19x HM-LC-Bl1PBU-FM, 24x HM-LC-Sw1PBU-FM, 16x HM-TC-IT-WM-W-EU, 19x HM-LC-Sw1-FM, 9x HM-PBI-4-FM, 3x HM-Sec-SD-Team, 1x HM-Sec-TiS, 10x HM-Sec-SC-2, 3x HM-CC-VG-1, 5x HM-Sec-MDIR-2, 2x HM-LC-Sw4-SM, 1x HM-Sen-Wa-Od, 5x HM-LC-RGBW-WM, 1x CUX28, 1x HM-Sen-EP, 3x HM-LC-Dim1T-FM, 1x HM-LC-Sw4-DR, 1x HM-LC-Dim1TPBU-FM, 2x HM-WDS10-TH-O, 1x HM-Sec-WDS-2, 2x HM-ES-PMSw1-Pl, 14x HMW-LC-Sw2-DR, 1x HM-WDS100-C6-O, 2x HMW-IO-12-Sw7-DR

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von dtp » 11.12.2017, 08:18

Hallo Kai,

welche Logikschicht-Version nutzt Du? "Standard", "Legacy" oder "Community"?

Die Info findest Du in der CCU2-Sytemsteuerung unter CCU2-Wartung.

Schalte mal auf "Community" um, falls noch nicht geschehen.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von dtp » 11.12.2017, 09:36

SMA hat geschrieben: Alle Nachrichten kamen umgehend an! Das heißt, stopRepeat wurde nicht beachtet!

In allen 3 Skripten steht stopRepeat auf 60. Im Einsatz habe ich Telegram (notwendig, wegen Fehler... Bis heute nicht weggegangen), dann kommt Prowl, dann Pushalot (fliegt wohl raus, Service eingestellt wie es scheint), dann das Setzen der Referenz.
Ich versuche das mal nachzustellen. Muss aber erst wieder die Prowl- und Pushalot-Clients installieren, da ich diese beiden Dienste nicht mehr nutze. Evtl. ist da auch ein kleiner Bug in den jeweiligen zPNS-xx.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

nicx
Beiträge: 307
Registriert: 18.05.2013, 22:31
Hat sich bedankt: 4 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von nicx » 14.12.2017, 15:17

Hi,

ich habe das aktuelle Script versucht auf system.exec umzubauen:

Code: Alles auswählen

! Push-Nachrichten per Telegram senden
! weitere Informationen unter http://homematic-forum.de/forum/viewtopic.php?f=31&t=26282
! Version 2.1, Autor: dtp
! ACHTUNG: Dieses Skript benötigt eine CCU-Firmware ab Version 2.29.22
   
! +++++ User-Daten +++++
! In den nachfolgenden Listen werden die User-Daten durch "xx|" eingeleitet und durch EINEN Leerschritt voneinander getrennt. 
string HMinfoList = "01|xxx:AAFwcJc1jMD-1Z7i7kmbNrZDQYSIvwTvnjs"; ! API-Schlüssel (Bot-Token) für Info-Meldungen. Beispiel: "01|xxxxKey1xxxx 02|xxKey2xx"
string HMwarnungList = ""; ! optionale API-Schlüssel (Bot-Token) für Warnmeldungen
string HMalarmList = ""; ! optionale API-Schlüssel (Bot-Token) für Alarmmeldungen
string chatIdList = "01|xxx"; ! Chat-IDs der User. Beispiel: "01|xxxxxxxxx 02|xxxxxxxxx"
string prioMinList = "01|-2"; ! Prioritäten, ab der die User Nachrichten erhalten sollen. Beispiel: "01|-2 02|0"
     
! +++++ Dauer in Sekunden, innerhalb der keine identischen Push-Nachrichten gesendet werden sollen +++++
integer stopRepeat = 10;
     
! +++++ Namen der zwingend benötigten Systemvariablen +++++
string svPushText = "CCU SV Push Text"; ! Text der aktuell zu übertragenden Push-Nachricht
string svPushTextRef = "CCU SV Push Text Ref"; ! Text der vorherigen Push-Nachricht als Referenz

! +++++ Namen der optionalen Systemvariablen (auf "" setzen, wenn nicht benötigt) +++++
string svPushPrio = "CCU SV Push Prio"; ! Prioritäten der Push-Nachrichten (-2,-1,0,1,2), default: 0
string svPushService = "CCU SV Push Dienst"; ! Push-Dienste ("aus;alle;..."), default: alle

! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################

! +++++ Deklaration weiterer Variablen +++++
string message; string HMinfo; string HMwarnung; string HMalarm; 
string pushService = "alle"; string userStr; string chatId; string prioMin; 
integer prio = 0; integer userIndex; integer startIndex; integer diff; integer sendFlag = 1;
object svObject; object svObjectList;

! +++++ Systemvariablen erzeugen bzw. falls vorhanden, auslesen +++++
if(!svPushText){svPushText = "CCU SV Push Text";}
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText);
if(!svObject){
  svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID()); 
  svObject.Name(svPushText); svObject.DPInfo("Aktuelle Push-Nachricht"); svObject.Internal(false); svObject.Visible(true); 
  svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
else{message = svObject.Value();}

if(!svPushTextRef){svPushTextRef = "CCU SV Push Text Ref";}
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef);
if(!svObject){   
  svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
  svObject.Name(svPushTextRef); svObject.DPInfo("Vorherige Push-Nachricht"); svObject.Internal(false); svObject.Visible(true);
  svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}

if(svPushPrio){
  svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushPrio);
  if(!svObject){   
    svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
    svObject.Name(svPushPrio); svObject.DPInfo("Priorität der Push-Nachricht"); svObject.Internal(false); svObject.Visible(true);
    svObject.ValueType(ivtFloat); svObject.ValueSubType(istGeneric); svObject.ValueUnit(""); svObject.ValueMin(-2); svObject.ValueMax(2); dom.RTUpdate(true);
  }
  else{prio = svObject.Value().ToInteger(); if(prio == 2){stopRepeat = 0;}}
}

if(svPushService){
  svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushService);
  if(!svObject){   
    svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
    svObject.Name(svPushService); svObject.DPInfo("Auswahl des Push-Dienstes"); svObject.Internal(false); svObject.Visible(true);
    svObject.ValueType(ivtInteger); svObject.ValueSubType(istEnum); svObject.ValueList("aus;alle;Telegram"); svObject.ValueUnit(""); dom.RTUpdate(true);
  }
  else{
    if(svObject.ValueList().Find("Telegram") == -1){svObject.ValueList(svObject.ValueList() + ";Telegram");}
    pushService = svObject.ValueList().StrValueByIndex(";", svObject.Value());
  }
}

! +++++ Push-Nachrichten erzeugen und versenden ++++
if((pushService == "alle") || (pushService == "Telegram") || (prio == 2)){   
  ! ----- Vermeidung identischer Push-Nachrichten innerhalb stopRepeat Sekunden -----
  diff = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushText)).Timestamp().ToInteger() - (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef)).Timestamp().ToInteger();
  if(diff < stopRepeat){
    if(message == (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushTextRef)).Value()){sendFlag = 0;}
  }
  
  if(sendFlag == 1){
    ! ----- Abschneiden zu langer Push-Nachrichten, um das Senden sicherzustellen -----
    if(message.Length() > 980){message = message.Substr(0, 980)#"\nMaximale Nachrichtenlänge erreicht!";}

    ! ----- Umwandlung von Sonderzeichen gem. UTF-8 -----
    message = message.ToUTF8();

    ! ----- Umwandlung von HTML-Color-Tags in HMTL-Fettdruck-Tags -----
    message = message.Replace("</font>", "[/b]");
    while(message.Find("color=") > 0){
      message = message.Replace("<font color=" # message.Substr(message.Find("color=") + 6, message.Find(">") - message.Find("color=") + 5), "[b]");
    }
    message = message.Replace("[", "<"); message = message.Replace("]", ">"); 
    
    ! ----- Absenden der Push-Nachrichten -----
    foreach(HMinfo, HMinfoList.Split(" ")){
      ! Werte zuordnen
      userIndex = HMinfo.Substr(0, 2).ToInteger(); userStr = HMinfo.Substr(0, 3);
      HMinfo = HMinfo.Substr(3, HMinfo.Length()-3);
      startIndex = chatIdList.Find(userStr).ToInteger();
      if(startIndex != -1){
        chatId = chatIdList.Substr(startIndex+3, chatIdList.Length()-1);
        chatId = chatId.Substr(0, chatId.Find(" "));
      } else{quit;}
      startIndex = HMwarnungList.Find(userStr).ToInteger();
      if(startIndex != -1){
        HMwarnung = HMwarnungList.Substr(startIndex+3, HMwarnungList.Length()-1);
        HMwarnung = HMwarnung.Substr(0,HMwarnung.Find(" "));
      } else{HMwarnung = HMinfo;}
      startIndex = HMalarmList.Find(userStr).ToInteger();
      if(startIndex != -1){
        HMalarm = HMalarmList.Substr(startIndex+3, HMalarmList.Length()-1);
        HMalarm = HMalarm.Substr(0,HMalarm.Find(" "));
      } else{HMalarm = HMinfo;}
      startIndex = prioMinList.Find(userStr).ToInteger();
      if(startIndex != -1){
        prioMin = prioMinList.Substr(startIndex+3, prioMinList.Length()-1);
        prioMin = prioMin.Substr(0,prioMin.Find(" "));
      } else{prioMin = -2;}

      if(prio >= prioMin){
        ! Informationsmeldungen senden
        if(prio == -2){
		  string stderr;
		  string stdout;
		  string url="https://api.telegram.org/bot"#HMinfo#"/sendMessage?text="#message#"&chat_id="#chatid#"&parse_mode=html&disable_notification=1";
		  system.Exec("wget -q --no-check-certificate -O - "#url, &stdout, &stderr);
          !(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k https://api.telegram.org/bot"#HMinfo#"/sendMessage -d text='"#message#"' -d chat_id="#chatId#" -d parse_mode=html -d disable_notification=1");
        }
        if((prio == -1) || (prio == 0)){
          string stderr;
		  string stdout;
		  string url="https://api.telegram.org/bot"#HMinfo#"/sendMessage?text="#message#"&chat_id="#chatid#"&parse_mode=html";
		  system.Exec("wget -q --no-check-certificate -O - "#url, &stdout, &stderr);
          !(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k https://api.telegram.org/bot"#HMinfo#"/sendMessage -d text='"#message#"' -d chat_id="#chatId#" -d parse_mode=html");
        }
        ! Warnmeldungen senden
        if(prio == 1){
          string stderr;
		  string stdout;
		  string url="https://api.telegram.org/bot"#HMwarnung#"/sendMessage?text="#message#"&chat_id="#chatid#"&parse_mode=html";
		  system.Exec("wget -q --no-check-certificate -O - "#url, &stdout, &stderr);
          !(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k https://api.telegram.org/bot"#HMwarnung#"/sendMessage -d text='"#message#"' -d chat_id="#chatId#" -d parse_mode=html");
        }
        ! Alarmmeldungen senden
        if(prio == 2){
          string stderr;
		  string stdout;
		  string url="https://api.telegram.org/bot"#HMalarm#"/sendMessage?text="#message#"&chat_id="#chatid#"&parse_mode=html";
		  system.Exec("wget -q --no-check-certificate -O - "#url, &stdout, &stderr);
          !(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k https://api.telegram.org/bot"#HMalarm#"/sendMessage -d text='"#message#"' -d chat_id="#chatId#" -d parse_mode=html");
        }
      }
    }
  }
}
Leider bekomme ich bei der Fehlerprüfung folgende Meldung:

Code: Alles auswählen

Error 1 at row 129 col 99 near ^#"&parse_mode=html&disable_notification=1";
		  system.Exec("wget -q --no-check-
Error 1 at row 129 col 99 near ^#"&parse_mode=html&disable_notification=1";
		  system.Exec("wget -q --no-check-
Error 1 at row 129 col 99 near ^#"&parse_mode=html&disable_notification=1";
		  system.Exec("wget -q --no-check-
Error 1 at row 129 col 99 near ^#"&parse_mode=html&disable_notification=1";
		  system.Exec("wget -q --no-check-
Error 1 at row 129 col 99 near ^#"&parse_mode=html&disable_notification=1";
		  system.Exec("wget -q --no-check-
Error 1 at row 129 col 99 near ^#"&parse_mode=html&disable_notification=1";
		  system.Exec("wget -q --no-check-
Einen Tipp was falsch sein könnte? Danke!

nicx
Beiträge: 307
Registriert: 18.05.2013, 22:31
Hat sich bedankt: 4 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von nicx » 14.12.2017, 15:23

habs selbst herausgefunden: da war irgendwo ein falscher linbreak versteckt... nach einer normalisierung hats funktioniert :)

Joergb
Beiträge: 19
Registriert: 06.12.2017, 17:20

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von Joergb » 19.12.2017, 10:45

Hi,

wollte mir nur den Dienst Pushsafer einrichten für Bilder Versand da dieses ja bei Pushover nicht Unterstützt wird und Telegram
leider wie WhatsApp in China eine VPN Verbindung benötigt welche natürlich nicht unentwegt an ist.

Wo müsste ich jetzt die CCU SV Push Dienst setzten!? da ja voreingestellt ist "alle"

Meine erste Vermutung war jetzt das ich die Variable mit
string pushService = "Pushsafer"; bzw. string pushService = "Pushover";
im jeweiligen Programm im Programmkopf bei Variablen Deklaration mit auf den weg gebe oder ich Ändere

Code: Alles auswählen

! +++++ Auswahl des Push-Dienstes +++++
if(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushService)){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svPushService)).State("3");}
Entsprechend ab.

Danke
Joerg

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von dtp » 19.12.2017, 11:35

Ja, so geht's. Vorausgesetzt, Pushsafer steht an vierter Stelle in der Liste. Ich persönlich mache das immer mit pocketControl. Da kann man die Systemvariablen sehr bequem setzen. Gibt's ab er nur für iOS.

Übrigens, wenn Du raus bekommen hast, wie man per Pushsafer Bilder verschickt, dann sag mal Bescheid.

Und Telegram braucht in China wirklich eine permanente VPN-Verbindung?
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Joergb
Beiträge: 19
Registriert: 06.12.2017, 17:20

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von Joergb » 19.12.2017, 15:33

Hallo Thorsten,

danke für deine Antwort.
Ja Pushsafer steht an dritter Stelle und Pushover an 2ter :)

IOS ist gut weil apple hier in China eingesetzt wird da es die ersten waren die 4G mit China Mobile supportet bekommen haben!
Jetzt Funktioniert das mittlerweile aber auch mit den Android's hier.

Ja, so geht's. Vorausgesetzt, Pushsafer steht an vierter Stelle in der Liste. Ich persönlich mache das immer mit pocketControl. Da kann man die Systemvariablen sehr bequem setzen. Gibt's ab er nur für iOS.

Übrigens, wenn Du raus bekommen hast, wie man per Pushsafer Bilder verschickt, dann sag mal Bescheid.
dtp hat geschrieben:Und Telegram braucht in China wirklich eine permanente VPN-Verbindung?
Tja da könnte ich jetzt in die Glasslugel schauen :D
Ab und an Funktioniert es mal, dann ist aber auch irgendjemand wichtiges zum Staatsbesuch vor Ort oder ein Gipfel bzw. es
wird mal wieder an der Chinesischen Firewall rum geschraubt und Experimentiert!

Manchmal hast Du Glück und hörst ein Ton bzw. kannst noch einen Blick auf dem Lockscreen erhaschen aber die Nachricht
laden/anschauen kannst Du dann nur wenn Du VPN Aktivierst.
Update
Gerade nochmal Getestet! Obige Aussage bezüglich VPN und Push-Nachricht nur bei Eingang auf Lockscreen ersichtlich!

Und da ab Februar 2018 VPN dann auch illegal in China wird wird es eh sehr Interessant für die meisten hier die keine Chinesen sind und von der Aussenwelt abgeschnitten Leben möchten.

Grüße
Joerg

p.s.: wenn ich es hin bekomme mit dem Bilder Transfer gebe ich bescheid! Wird aber wohl so ein paar tage Dauern :)

nicx
Beiträge: 307
Registriert: 18.05.2013, 22:31
Hat sich bedankt: 4 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von nicx » 19.12.2017, 21:46

Hi,

ich habe statt CuxD auf system.exec umstellen wollen, die Warnmeldung wird z.b. so generiert:

Code: Alles auswählen

        ! Warnmeldungen senden
        if(prio == 1){
          string stderr;
          string stdout;
          string url="https://api.telegram.org/bot"#HMwarnung#"/sendMessage?text="#message#"&chat_id="#chatid#"&parse_mode=html";
          system.Exec("wget -q --no-check-certificate -O - "#url, &stdout, &stderr);
       }
Sobald nun eine Leertaste in der Message vorhanden ist wird keine Meldung mehr an Telegram geschickt. Meldungen ohne Leertaste funktionieren, auch Meldungen mit <font> Deklaration und Umlauten. Es stört lediglich die Leertaste.

Woran kann das liegen?

nicx
Beiträge: 307
Registriert: 18.05.2013, 22:31
Hat sich bedankt: 4 Mal

Re: Howto - zentrales Push-Nachrichten-Programm (zPNP) V2.1

Beitrag von nicx » 19.12.2017, 21:51

habs schon selbst rausgefunden. für alle interessierten: die lösung liegt in den fehlenden hochkommatas bei der URL, richtig sieht es also so aus:

Code: Alles auswählen

 ! Warnmeldungen senden
        if(prio == 1){
          string stderr;
          string stdout;
          string url="'https://api.telegram.org/bot"#HMwarnung#"/sendMessage?text="#message#"&chat_id="#chatid#"&parse_mode=html'";
          system.Exec("wget -q --no-check-certificate -O - "#url, &stdout, &stderr);
       }
:)

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“