RaspberryMatic 3.51.6.20200613 – Neue Version

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Benutzeravatar
onkeltommy
Beiträge: 1383
Registriert: 07.05.2016, 08:03
Wohnort: Wien
Hat sich bedankt: 28 Mal
Danksagung erhalten: 26 Mal

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von onkeltommy » 18.06.2020, 08:21

Hallo Jens

Danke für deine schnelle und ausführlich Antwort, werde sofort sämtliche Scripts anpassen.

Das / die Tablets sind per Ping erreichbar, was Tasker im Hintergrund macht bekomme ich nicht wirklich mit.

Wenn der Zusatz von " &" das Blockieren der System.Exec verhindert, läuft sich dann ein fehlerhafter Befehl dann mal tot oder wie ist dass, wenn z.B. das angesprochene Endgerät irgendwann wieder reagiert ? Schiesst die Rega so einen "hängenden" Task dann irgendwann ab und ein erneuter Aufruf des selben Scripts würde dann wieder funktionieren ? Ist das mit dem "&" also als SendAndForget zu verstehen ?

Btw: danke auch für die Farbtrennung der inaktiven Programme, das war heute Nacht Gold wert, werde heute noch den Spenden Button streicheln.

Vielen vielen Dank

Thomas
lG
Thomas
--------------------------
RaspberryMatic 3.73.9.20240130 @ TinkerS (Produktivsystem) & Historian @ SynologyVM & 2x RB3+ @ Nachwuchs

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1856 Mal
Kontaktdaten:

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von jmaus » 18.06.2020, 08:44

onkeltommy hat geschrieben:
18.06.2020, 08:21
Wenn der Zusatz von " &" das Blockieren der System.Exec verhindert, läuft sich dann ein fehlerhafter Befehl dann mal tot oder wie ist dass, wenn z.B. das angesprochene Endgerät irgendwann wieder reagiert ? Schiesst die Rega so einen "hängenden" Task dann irgendwann ab und ein erneuter Aufruf des selben Scripts würde dann wieder funktionieren ? Ist das mit dem "&" also als SendAndForget zu verstehen ?
Genau so ist es. Es kann in der Tat sehr gut sein, das das hinzufügen von "&" alleine zwar das hängen der ReGa beseitigt, aber es dann dazu kommt das dann haufenweise wget prozesse auf der Zentrale im Hintergrund entstehen die nie bzw. erst sehr spät beendet werden, denn wget hat standardmäßig einen read timeout von 900 sekunden. D.h. erst nach 900 sekunden wird wget sich selber beenden und folglich dann eben auch der subprozess den rega mit dem "&" startet beendet werden.

Ich würde dir also dazu raten, zusätzlich zum "&" ganz am schluss des wget aufrufes auch noch die option "--timeout=X" den wget calls hinzuzufügen und bei X dann einen wert in sekunden anzugeben den der befehl maximal dauernd sollte (also z.B. 10 sekunden). Dann würde der wget system.Exec() eben z.B. wie folgt bei dir aussehen:

Code: Alles auswählen

system.Exec("wget -O /dev/null --timeout=10 -q http://192.168.0.28:8765/?helligkeit=254 &")
Inwieweit natürlich max 10 sekunden für den Aufruf i.O. sind müsstest du selbst individuell dann von wget aufruf zu wget aufruf entscheiden.

Und nur so nebenbei, falls ggf. andere Leute ähnliche Probleme mit hängenden system.Exec() aufrufen haben, aber ggf. kein wget nutzen das selbst ja solch eine timeout option hat. Man kann auch einfach das shell interne "timeout" kommando vor das eigentlich aufzurufende kommado stellen, dann stellt die shell selber sicher das der befehl nicht länger als die angegebene zeit in sekunden dauern darf und schiesst zur not den prozess dann ab. In dem Fall würde der wget aufruf dann wie folgt aussehen:

Code: Alles auswählen

system.Exec("timeout 10 wget -O /dev/null -q http://192.168.0.28:8765/?helligkeit=254 &")
man kann also hinter "timeout 10" einen beliebigen Befehl hängen der dann überwacht wird. In deinem Fall würde ich jedoch (weil wget die funktionalität selber hat) die --timeout option bevorzugen. Das Verhalten sollte aber in beiden Fälle dann das selbe sein.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
onkeltommy
Beiträge: 1383
Registriert: 07.05.2016, 08:03
Wohnort: Wien
Hat sich bedankt: 28 Mal
Danksagung erhalten: 26 Mal

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von onkeltommy » 18.06.2020, 08:59

Hi

Nochmal Danke und - ja - das & hat das Problem sofort beseitigt und in der Tat, eines der Tablets reagiert kaum mehr auf den Helligkeitsbefehl-irgendwann dunkelt es dann ab oder wird wieder hell, aber nicht sofort, wie das 2te. Und das war nach Deiner richtigen Diagnose nun der Grund, Befehl wurde nicht fertig, ergo blieb hängen, ergo Rega tot. Und nachdem die Helligkeitsteuerung nicht permanent stattfindet sondern je nachdem was die SV tut...passierte es "irgendwann".

Pfffff....das war ne harte Nuss, ob ich den timeout reingebe muss ich noch gucken, die 900 default würden nicht stören, da die jeweiligen wget Befehle im n Minuten oder n Stunden Bereich ausgeführt werden

Und LCD Helligkeit ist ja nur n nice to have, wenns mal nicht tut, auch gut. Nur sollte das halt nicht die Rega abschiessen......und die kann ja nix dafür

10000000 Dank und lG
Thomas
Zuletzt geändert von onkeltommy am 18.06.2020, 09:01, insgesamt 1-mal geändert.
lG
Thomas
--------------------------
RaspberryMatic 3.73.9.20240130 @ TinkerS (Produktivsystem) & Historian @ SynologyVM & 2x RB3+ @ Nachwuchs

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von Black » 18.06.2020, 09:01

jmaus hat geschrieben:
17.06.2020, 23:48
Black hat geschrieben:
17.06.2020, 21:08
Auf der aktuellen Raspberrymatik ist das String Super quote ^ fehlerhaft implementiert.

auf allen alten Systemen läuft

Code: Alles auswählen

string s= "abcd\zui";
s=s.Replace (^\^,^\\^);
WriteLine (s);  
einwandfrei.

auf der aktuellen 3.51.6.20200613 bringt das gleiche einen Scriptruntimeerror.
Die Funktion ist gefährlich weil damit das verdoppeln des Backslash so nicht mehr möglich ist.(Und nicht nur ich dieses nutze)
Ist mir auch schon gestern aufgefallen. Bis es repariert ist kannst du einfach folgenden Workaround nutzen:

Code: Alles auswählen

s=s.Replace (^\ ^.Trim(),^\\ ^.Trim());
Dann klappt das bis zum Fix auch wieder.

Bevor ich mich durch eine 5 stellige Anzahl von programmzeilen wühle um etwas temporär zu ändern, habe ich das Spielesystem downgraded bis zum Fix. Ich denke ja, das dieser zeitnah kommt.

Gruss, Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Ahnungsbefreit
Beiträge: 32
Registriert: 17.06.2020, 18:06
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 9 Mal

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von Ahnungsbefreit » 18.06.2020, 09:06

jmaus hat geschrieben:
17.06.2020, 08:33
Hallo Zusammen,

da es in der aktuellen Version ja bei Nutzung eines HB-RF-USB in Kombination mit einem HM-MOD-RPI-PCB bei nutzung unter OVA zu Problemen gekommen ist und auch z.B. auch bei Nutzung eines RaspberryPi4 fälschlicherweise eine ">80 Grad" Warnung erzeugt wurde und es hier/da auch noch kleinere Probleme gab, habe ich ja für kommendes Wochenende einen neuen Release geplant. Wer mag (und ich bitte darum) und vor allem wer von den Problemen betroffen war sollte doch bitte vorab einmal den aktuellen nightly build probieren um mir dann ein Feedback zu geben ob es nun wirklich problemlos läuft oder ggf. doch noch hier/da Probleme gibt.

Den aktuellen nightly build bzw. snapshot kann man von folgender Seite runterladen:

https://github.com/jens-maus/RaspberryM ... /snapshots

Über reichliches Feedback würde ich mich in der Tat freuen.
Hallo,

ich hatte dieses Problem (>80 Grad Warnung) mit der Release-Version auch und kann bestätigen, mit dem Nightly Build (...617) tritt das nicht mehr auf.

Vielen Dank für die schnelle Fehlerbehebung!

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1856 Mal
Kontaktdaten:

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von jmaus » 18.06.2020, 09:09

Black hat geschrieben:
18.06.2020, 09:01
jmaus hat geschrieben: Ist mir auch schon gestern aufgefallen. Bis es repariert ist kannst du einfach folgenden Workaround nutzen:

Code: Alles auswählen

s=s.Replace (^\ ^.Trim(),^\\ ^.Trim());
Dann klappt das bis zum Fix auch wieder.

Bevor ich mich durch eine 5 stellige Anzahl von programmzeilen wühle um etwas temporär zu ändern, habe ich das Spielesystem downgraded bis zum Fix. Ich denke ja, das dieser zeitnah kommt.
Ja, es wird vmtl. ein zeitnahen Fix geben, aber kein kompletten Rollback, denn im Grunde ist es schon i.O. das man nun innerhalb eines super strings auch ein "^" zeichen nutzen kann (eben mit escapen via \^). Das war vorher nicht sauber/gut implementiert denn es muss ja trotz der super string funktionalität irgendwie ermöglicht werden das man ein ^ Zeichen auch dort nutzen kann ohne das damit erzwungen wird das der super string abgebrochen wird. Das war ja auch der Grund für einen anderen Bug im Bezug auf den super string character.

Der folgende Aufruf wie von dir gezeigt wird also auch nach meinem Fix nicht korrekt sein. D.h. der folgende Aufruf

Code: Alles auswählen

s=s.Replace(^\^, ^\\^);
müsstest du dann ohnehin zu folgendem abändern:

Code: Alles auswählen

s=s.Replace(^\\^, ^\\\\^);
Denn das wäre der richtige bzgl. der möglichkeit den ^ selbst auch in einem super string zu nutzen.

Darüberhinaus wird es nach meinem Fix dann aber vmtl. auch möglich sein das selbe ohne super string zu machen. Und zwar wie folgt:

Code: Alles auswählen

s=s.Replace("\\", "\\\\");
Weil auch dort schlägt der Bug wohl schon länger zu, denn eigentlich sollte das suchen&ersetzen eines backslash gegen zwei auch problemlos mit normalen strings möglich sein und nicht wie jetzt (und wie in den versionen davor) zu einem syntax fehler führen.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von Black » 18.06.2020, 09:39

jmaus hat geschrieben:
18.06.2020, 09:09

(....) müsstest du dann ohnehin zu folgendem abändern:

Code: Alles auswählen

s=s.Replace(^\\^, ^\\\\^);
Denn das wäre der richtige bzgl. der möglichkeit den ^ selbst auch in einem super string zu nutzen.
Mit dieser Lösung könnte ich dann auch leben, das ist ja dann einmal final ändern.
jmaus hat geschrieben:
18.06.2020, 09:09
Darüberhinaus wird es nach meinem Fix dann aber vmtl. auch möglich sein das selbe ohne super string zu machen. Und zwar wie folgt:

Code: Alles auswählen

s=s.Replace("\\", "\\\\");
Weil auch dort schlägt der Bug wohl schon länger zu, denn eigentlich sollte das suchen&ersetzen eines backslash gegen zwei auch problemlos mit normalen strings möglich sein und nicht wie jetzt (und wie in den versionen davor) zu einem syntax fehler führen.
Die Gefahr ist dann allerdings auch, das programme oder apps, die die remoteApi benutzen, um Strings überzuholen, den \ im String escapen müssen.
bislang ist das replace (^\^,^\\^); dazu die sinnige Möglichkeit. (ok, über Variablen ginge es noch, macht aber bisher keiner, wenn man sich die kommunikation über wireshark so anschaut)

nun hätten wir folgende Fälle:
Die neue Raspel: wird an dem bisher verwendeten ^\^scheitern, liesse sicxh aber fixen mit ^\\^

die Bestandanlagen mit CCU3 / alter Raspel kommen mit dem ^\^ klar, der Replace mit dem dann neuen ^\\^ greift aber nicht weil dort die rega den \\ uach als \\ ansieht

die Auswahl zwischen Pest und Cholera, oder ?

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Benutzeravatar
onkeltommy
Beiträge: 1383
Registriert: 07.05.2016, 08:03
Wohnort: Wien
Hat sich bedankt: 28 Mal
Danksagung erhalten: 26 Mal

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von onkeltommy » 18.06.2020, 10:02

Hi Jens

eine Frage noch, bei solchen Scripten detto mit "&" ?

Code: Alles auswählen

!Variable an Raspi senden
var x = dom.GetObject("EDV_Light_Sync").Value();
string url='http://192.168.0.90:8181/a.exe?y=dom.GetObject("EDV_Light_Sync").State('#x#')';
dom.GetObject("CUxD.CUX2801001:12.CMD_EXEC").State("wget -q -O - '"#url#"'");
also dann

Code: Alles auswählen

!Variable an Raspi senden
var x = dom.GetObject("EDV_Light_Sync").Value();
string url='http://192.168.0.90:8181/a.exe?y=dom.GetObject("EDV_Light_Sync").State('#x#')';
dom.GetObject("CUxD.CUX2801001:12.CMD_EXEC").State("wget -q -O - '"#url#"' &");
btw: Stimmt, wenn nötig, die "Position" des & ?
Oder brauch ich das bei CUxD nicht - weil es eben über CUxD läuft ?

Nochmal thx

lG Thomas
lG
Thomas
--------------------------
RaspberryMatic 3.73.9.20240130 @ TinkerS (Produktivsystem) & Historian @ SynologyVM & 2x RB3+ @ Nachwuchs

ProfDrYoMan
Beiträge: 174
Registriert: 25.11.2018, 15:16
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 15 Mal
Danksagung erhalten: 12 Mal

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von ProfDrYoMan » 18.06.2020, 10:36

Feedback zur Nightly von heute:

Auf meinem 218+ startet die sauber und flott durch. Allerdings habe ich gerade keinerlei Funkteile am USB. Umstellung von Pi3B+ auf das NAS erfolgt nach dem Release Ende dieser Woche.

Visu
Beiträge: 507
Registriert: 04.12.2016, 23:30
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: RaspberryMatic 3.51.6.20200613 – Neue Version

Beitrag von Visu » 18.06.2020, 11:33

Auf Tinker Board S erfolgreich eingespielt. läuft seit der Veröffentlichung ohne Probleme.

Danke

Gesperrt

Zurück zu „RaspberryMatic“