Einzelne Marker aus params.json separieren

Simon
Beiträge: 976
Registriert: Sa 19. Mär 2016, 20:03

Di 10. Jul 2018, 16:47

Entschuldigt, die etwas (dusselige) Nachfrage.

Wenn ich php nutze, wie kann ich das so einbetten, dass der Air am Ende das versteht?
Also, Marker auf eine extra html webseite legen, so dass ich das wie die Air-Gui einfach auslesen kann?

Muss ich bei php irgendwas beachten? Weil, wie binde ich das in eine html seite ein?

reicht da einfach nur <?php mit Abschluss oder muss ich zuvor noch html mässiges dazudichten?
Ich habe leider maximal rudimentäre html und Co kenntnisse, aber ich kriege ich es nicht gebacken, dass er nen markerstand ausliest. Er zeigt mit leidglich die echo infos an.... ;)
paulinchen
Beiträge: 303
Registriert: Di 28. Feb 2017, 14:15

Di 10. Jul 2018, 17:05

Leider verstehe ich Dein Posting nicht so ganz...

Wie man mit php die Marker ausliest, habe ich im Script ja gezeigt.
Willst Du die Marker in einer html-Seite anzeigen? Falls ja, ruf die php-Seite per AJAX auf...

Was willst Du denn genau machen?
Dos
Beiträge: 379
Registriert: Di 13. Sep 2016, 18:19

Di 10. Jul 2018, 18:14

@simon
Hast du denn deinen Markerstatus ausgelesen, aus der json?

Zeig doch mal was du bereits hast...
Simon
Beiträge: 976
Registriert: Sa 19. Mär 2016, 20:03

Di 10. Jul 2018, 21:14

Hi, ihr Zwei.

Ich möchte einfach Paulinchens php Script testen bzw. eben diese in html einfügen, dass ich ähnlich wie bei der normalen Air-Web-Gui mir die Seite per normalen Browser anzeigen lassen kann.
Allerdings habe ich kein Plan, wie das genau funktioniert btw. wie der Air das umsetzt... oder muss ich nen extra Server laufen lassen damit sowas überhaupt geht?

Also, ich will das Script auf den Air hochladen und dann normal via 192.x.x.x/y.htm mir anzeigen lassen bzw. eben auf einer extra Page die Marker anzeigen lassen.... aber wie gehe ich da vor? Ich habe weder auf Sebis Seite noch hier irgendwie verstanden, was ich da konkret machen muss. ;)

Die Temperatursache geht nun via normaler html / javascript wie hier verlinkt
viewtopic.php?f=24&t=2575
wie z.B. würde ich das php Marker script in das Temp-script von Frank2018 implentieren, damit das Ganze dann auch per php läuft? Oder wäre es sinnvoll per html weiterzumachen und die marker wie bei der Tempsensoren auszulesen?
Dos
Beiträge: 379
Registriert: Di 13. Sep 2016, 18:19

Di 10. Jul 2018, 22:22

Eine einfache seprate marker Seite basierend auf der Air Logik ist hier beschrieben

viewtopic.php?f=26&t=1491&p=13334&hilit ... ite#p13334


Folge der Beschreibung ( ich habe da dokumentiert was aus der original Datei entfernt werden muss) Ich denke dass wird das einfachste sein um deine Marker darzustellen.

Grundsätzlich lassen sich die json werte, also Marker auch mittel php/ html auslesen und visualisieren. Dafür braucht es dann aber eine server (raspi) mit php support etc.
Simon
Beiträge: 976
Registriert: Sa 19. Mär 2016, 20:03

Mi 11. Jul 2018, 11:13

Ah okay. Diese Info mit dem extra Server habe ich gebraucht....
Dann versuche ich es mal anders ohne php. ;)
Benutzeravatar
netzkeks
Beiträge: 43
Registriert: Fr 4. Mär 2016, 18:44
Wohnort: NRW

Sa 19. Jan 2019, 15:01

Hallo,

ich nutze seit einiger Zeit die Anwesenheitserkennung von Sebi https://www.schlaue-huette.de/apis-co/f ... -fritzbox/ und
diese funktioniert sehr gut.

Jedoch ist mir jetzt aufgefallen das in der params.html bei Minus Grad ein "-" vor der Temperatur gesetzt wird und
somit die Länge des Strings sich verändert.
In dem Fall passt der Eintrag im Skript:

Code: Alles auswählen

$anwesendinfo = substr($content3, 34, -137);
nicht mehr und muss lauten:

Code: Alles auswählen

$anwesendinfo = substr($content3, 34, -138);
Meine Frage, kann ich das Problem irgendwie mit der params.htm beheben oder
muss ich die params.json dafür auslesen?
Wenn es nur mit der params.json funktioniert, könnte mir ein User behilflich sein und
mir schreiben wie ich das Skript dahingehend verändern muss, dass der Marker 35
für die Anwesenheit freigestellt wird, danke?

Schöne Grüsse
netzkeks
Marley
Beiträge: 16
Registriert: Sa 24. Feb 2018, 13:13

Di 2. Apr 2019, 02:55

netzkeks hat geschrieben:
Sa 19. Jan 2019, 15:01
Hallo,

ich nutze seit einiger Zeit die Anwesenheitserkennung von Sebi https://www.schlaue-huette.de/apis-co/f ... -fritzbox/ und
diese funktioniert sehr gut.

Jedoch ist mir jetzt aufgefallen das in der params.html bei Minus Grad ein "-" vor der Temperatur gesetzt wird und
somit die Länge des Strings sich verändert.
In dem Fall passt der Eintrag im Skript:

Code: Alles auswählen

$anwesendinfo = substr($content3, 34, -137);
nicht mehr und muss lauten:

Code: Alles auswählen

$anwesendinfo = substr($content3, 34, -138);
Meine Frage, kann ich das Problem irgendwie mit der params.htm beheben oder
muss ich die params.json dafür auslesen?
Wenn es nur mit der params.json funktioniert, könnte mir ein User behilflich sein und
mir schreiben wie ich das Skript dahingehend verändern muss, dass der Marker 35
für die Anwesenheit freigestellt wird, danke?

Schöne Grüsse
netzkeks
Moin,
ich habe gerade selber als blutiger PHP Anfänger ein wenig mit dem Skript rumprobiert und habe eine Lösung gefunden um das Anwesenheitsscript für die params.json anzupassen .

Als erstes habe ich den Beispielcode von: https://www.schlaue-huette.de/lightmana ... rarbeiten/ genutzt und etwas angepasst um die richtige Nummer meines Markers zu heraus zu finden - Bei mir ist es Nr. 24.
Im Code Selber ist der Marker allerdings Nr. 23 da der erste Marker hier wahrscheinlich die Nr. 0 ist.

Code: Alles auswählen

<?php

$request2 = file_get_contents("http://ipdeslightmanagers/params.json");
$json2 = json_decode($request2, true);

echo 'Anwesenheit:<br>';
echo $json2['marker state'][23];

?>
Bei dir sollte dann theoretisch funktionieren, wenn die 23 durch eine 34 ersetzt wird.
Durch das Aufrufen/Aktualisieren des Skripts via Browser und Touch-Toggle des Markers sollte der Status dann von 0 auf 1 Wechseln.
Marker einschalten --> Wert wechselt auf 1 - Marker ausschalten --> Wert wechselt auf 0.
Sollte dies nicht der Fall sein heißt es Trial & Error die 23 solange durch mögliche Zahlen zu ersetzen bis die Statusänderung des Markers entsprechend im Browser zu sehen ist.(IP des Lightmanagers eintragen nicht vergessen, sonst passiert gar nichts) ;)

Danach wird das eigentliche Anwesenheits-Skript angepasst:

Code: Alles auswählen

$context3 = file_get_contents("http://ipdeslightmanagers/params.json");
$content3 = json_decode($context3, true);
$anwesendinfo = $content3['marker state'][23];
Die 23 muss natürlich wieder durch die Zahl des eigenen Markers ersetzt werden damit es funktioniert.(IP des Lightmanagers nicht vergessen) ;)

Das sollte alles an nötigen Anpassungen sein, ich hoffe das hilft dir weiter

Gruß
Marley
Marioir
Beiträge: 1147
Registriert: Mi 24. Feb 2016, 15:36
Wohnort: Offenbach

Di 2. Apr 2019, 09:06

Ich habe die Marker nochmal in eine Extra Variable gesetzt

Code: Alles auswählen

$request1 = file_get_contents("http://192.168.1.111/params.json");
$json1 = json_decode($request1, true);
$marker = str_split($json1['marker state']);
So kann ich jetzt mit

Code: Alles auswählen

echo 'Status Marker Rollladensteuerung = ';
echo $marker[14] . '<br>';
Mein Marker Status anzeigen lassen

Oder mit einfachen IF Else Abfrage, habe ich je nach Status des Markers ein anderes Bild anzeigen lassen,

Code: Alles auswählen

#Marker Fenster Badezimmer
	if($marker[14] == "0") 
		{
			$bildurl1 = "fensteropen.jpg";
		}
			else 
		{
			$bildurl1 = "fensterclose.jpg";
	 	}

Code: Alles auswählen

<img src="<?php echo $bildurl1; ?>" alt="" border="0" width="200" height="200">
Marker 14 = Marker 15, da immer bei 0 angefangen wird.
Benutzeravatar
netzkeks
Beiträge: 43
Registriert: Fr 4. Mär 2016, 18:44
Wohnort: NRW

Mi 3. Apr 2019, 18:19

Hallo,
danke für die Lösungen. Werde es am Wochenende mal ausprobieren...
Schöne Grüsse
netzkeks
Antworten