Beiträge von Robby

    Hallo Tell,

    Habe noch ein Problem in der getstate.php. Wie muss ich in den echo String statt true und false eine Variable einbinden.

    Versuche gerade die Skripte bei mir einzubinden. So wie es jetzt ist bekomme ich zwar keine Fehlermeldung mehr, aber die Button sind alle grün.

    Egal welchen wert die einzelnen Variablen haben.

    hyle

    Danke für den Hinweis !

    Da war ich doch etwas zu vorschnell, man sollte doch erst weiter machen...

    Habe da doch noch ein Problem, denn wenn ich es erweitern möchte bekomme ich eine Fehlermeldung.

    TypeError: document.getElementById(...) is null

    die getstate.php:

    PHP
     <?php
      header("Access-Control-Allow-Origin: *");
      header( "Content-type", "application/json");
      echo '{ "input1": true, "input2": false, "input3": true }' ;
    ?>

    und die index.html

    @ Tell

    könntest du mich dabei noch einmal unterstützen?

    Ich kann so kein Fehler erkennen.

    Ich habe den Fehler gefunden.

    Den Tip mit der Entwickler Ansicht war gut. Danach habe ich das halbe Internet durchsucht und bin fündig geworden.

    Nachdem ich deine getstate.php um einen Eintrag erweitert habe funktioniert dein Skript auch bei mir

    PHP
     <?php
      header("Access-Control-Allow-Origin: *");
      header( "Content-type", "application/json");
    
      echo '{ "input1": true, "input2": false }' ;
    ?>

    Jetzt komme ich auch klar und kann meine Skripte entsprechend anpassen.

    Ich möchte mich ganz herzlich bei dir bedanken für eine Hilfe.

    Das Thema kann als gelöst makiert werden.

    Hey Tell,

    soweit ich es eingrenzen konnte liegt es warscheinlich an den Apache2 Server, denn der Apache2 läuft bei mir auf jeden Rasberry. Der Grund ist da ich mit einen angefangen bin und es immer erweitert habe. Und was ich jetzt mache soll halt als Zentrale Anzeige dienen, damit ich an einer Stelle alles sehen kann wie der Stand ist.

    So nun zu den Fehlermeldungen:

    Im Crom unter Netzwerkanalyse ist alles OK. Die Datei wird gefunden.

    Aber unter der Console bekomme ich diese Meldung:

    Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://192.168.xxx.xxx/web/getstate.php (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt).

    Dabei wird dieser Link mit angegeben.

    Der beschreibt ganz gut den Fehler. Nur wie gesagt meine Kenntnisse sind noch nicht so groß. Deswegen weiß ich nicht wo und wie ich den Header Eintrag einbinden muss.

    Hatte heute wieder erwarten etwas Zeit gehabt und dein Skript ausprobiert.

    Ich habe beide Skripte 1 zu 1 übernommen.
    Wenn ich beide Skripte auf einen PI habe funktioniert es. Aber wenn ich die Getstate.php auf einen anderen PI verlege und die IP-Adresse in der index.html anpasse, bekomme ich folgende Fehlermeldung:

    TypeError: NetworkError when attempting to fetch resource.

    Die Skripte gehören zum Benutzer www-data und die Rechte habe ich auch auf 0755 gesetzt. Die Fehlermeldung kommt immer.

    Die Skripte sind im Verzeichnis /var/www/html abgelegt. So wie es aussieht, habe ich ein Berechtigungsproblem, denn die Getstate.php findet er.

    Wenn ich die nämlich umbenenne bekomme ich die Fehlermeldung das er die Datei nicht findet.

    Muss ich eventuell noch ein Modul nach installieren in Linux? Wegen JSON oder AJAX. Da ich bis jetzt noch nichts damit gemacht habe.

    Installiert habe ich bis jetzt Apache, php und sqlite.

    Endschuldige wenn ich so danach Frage, aber ich habe noch nicht sehr viel Kenntnisse in Linux und PI.

    Danke Tell,

    dann muß ich ja meine ganze skripte umbauen oh je.

    Leider habe ich in JSON und AJAX noch keine Erfahrungen. Also erst damal einlesen.

    Oder kannst du mir kurz zeigen, wie die beide skripte aussehen müssen um die Ausgabe in AJAX zu bekommen?

    Die GPIO frage ich so ab: Dieses skript im im Hauptprogramm über include() eingebunden, deswegen der header.

    PHP
    <?php
    #
    # Pin 3  -->  GPIO 2  -->  einschalten  --> Relais 1/1
      $wert1 = exec("gpio  -g read 2");
      header('Location: http:../web/OrchideenControl.php');
      exit;
    ?>

    Und die Datenbank Abfrage sieht bei mir so aus:

    Wäre dir dankbar, wenn du mir dabei Hilfestellung geben kannst.

    Hallo ich könnte eure Hilfe gebrauchen.

    Bin bei meiner Smart Home Geschichte an meine Grenzen gestoßen.

    Ich habe einen Raspberry im Garten für die Teich und Rasenbewässerung und einen im Haus für Licht und Rolladensteuerung. Beide sind mit einen Web-Server versehen sodas ich die vom Handy oder PC steuern kann. Entsprechend haben die Button unterschiedliche Farbzustände je nachdem wie der Status der einzelnen GPIO sind.

    Neu habe ich einen 3. Rasperry mit Display. Dort werden alle GPIO der anderen 2 Rasberry als Button dargestellt. Damit kann ich auch alle GPIO steuern.

    Nun möchte ich auch hier, das die Button entsprechend farblich anzeigen, wie die Schaltzustände der einzelne GPIO sind. Des weiteren werden für die Lichtsteuerung Aktoren benutzt. Die Schaltzustände werden da in einer SQLite Datenbank gespeichert.


    Wie kann ich jetzt die GPIO und die Datendank der beiden Raspberry auslesen sodas ich die Farblich auf dem Display anzeigen kann.
    Habe es mit include() und Angabe der IP-Adresse usw. probiert aber ohne Erfolg.


    Welche Möglichkeiten gibt es die ich benutzen kann. Im Moment habe ich keine Idee, wie ich das realisieren kann.
    Wäre euch sehr Dankbar wenn ihr mir helfen könnt.

    Habe auch die gleiche Anleitung im Netz gefunden und probiere schon seid mehreren Tagen das ans laufen zu bekommen.

    Habe mich auch genau an die Anleitung gehalten aber auch ohne Erfolg. Habe es schließlich soweit hinbekommen, das Alexa die Geräte zwar gefunden hat, aber anschließend kam in der App der Hinweis: "Es ist ein Fehler aufgetreten" und wenn den Befehl ausführe bekomme ich die Ansage "Das wird nicht unterstützt".

    Habe noch nicht viel Erfahrung mit den Raspberry aber was mir aufgefallen ist, das beim skript für die Vorbereitung schon Fehler auftreten und zwar beim Modul "lvm" was nicht gefunden wird.

    Eventuell liegt der Fehler darin, das der Autor die Anleitung für die Jessie Linux Version geschrieben hat. Da erkennt er zb. das Modul "llvm" nicht.

    Aber eventuell gibt es ja hier ein User der FauxmoESP auf einen aktuellen Raspberry am laufen hat und hier eventuell eine Anleitung zur Verfügung stellt.

    Auf githup sind die Module vom Autor zwar hinterlegt, wie es aussieht werden dort die skripte auch aktualisiert wenn man nach den Datum schaut.

    Nur habe ich da Probleme das von dort auf den Raspberry umzusetzten.

    Wegen meine geringeren Linux Kentnisse betötige ich dafür eine Schritt für Schritt Anleitung.

    Frage an die Experten;

    im Verzeichnis /tmp befinden sich einige Dateien, die werden von verschiedene Skripte angelegt und laufend aktualisiert. Die Skripte sind in bash bez. Python geschrieben.

    Nun möchte ich die Inhalte auf meiner Webseite anzeigen. Dabei stoße ich auf ein Problem. Der Apache verweigert den Zugriff auf das TMP Verzeichnis.

    Ich habe auch schon rausgefunden, das man den Apache den Zugriff erlauben muss. Nur wie muss ich das machen.

    Was muss ich ändern, damit ich den Inhalt der Dateien aus das TMP Verzeichnis auslesen kann?

    Hallo Forum Mitlgieder,

    ich könnte eure Hilfe gebrauchen.

    Möchte eine sqlite3 Datenbank mit phpLiteAdmin auf meinen Raspberry installieren, leider bekomme ich das irgendwie nicht hin.

    Habe schon Tagelang gesucht aber leider nichts gefunden.

    Was habe ich bis jetzt gemacht. Einen Apache2 und PHP7.3 installiert, danach sqlite3 und phpLiteAdmin.

    Code
    sudo apt-get install apache2
    sudo apt-get install php7.3
    sudo apt-get install sqlite3
    sudo apt-get install php7.3-sqlite

    danach das Verzeichnis /var/www/html/sqlite angelegt in phpLiteAdmin entsprechend eingerichtet

    Code
    drwxr-xr-x 2 www-data www-data   4096 Feb 17 13:34 .
    drwxr-xr-x 3 root     root       4096 Feb 17 13:23 ..
    -rwxr-xr-x 1 www-data www-data   2787 Jun 28  2015 phpliteadmin.config.php
    -rwxr-xr-x 1 www-data www-data 252794 Sep  5 10:02 phpliteadmin.php
    pi@rapberry-Test:/var/www/html/sqlite $

    Im Anschluß wenn ich phpliteadmin.php aufrufe bekomme ich die Maske, das ich eine Datenbank einrichten soll. Auch soweit ist alles in Ordnung.

    Das Verzeichnis sieht dann so aus:

    Code
    drwxr-xr-x 2 www-data www-data   4096 Feb 17 13:34 .
    drwxr-xr-x 3 root     root       4096 Feb 17 13:23 ..
    -rwxr-xr-x 1 www-data www-data   4096 Feb 17 13:34 datenbank.db
    -rwxr-xr-x 1 www-data www-data   2787 Jun 28  2015 phpliteadmin.config.php
    -rwxr-xr-x 1 www-data www-data 252794 Sep  5 10:02 phpliteadmin.php
    pi@rapberry-Test:/var/www/html/sqlite $

    Habe auch schon entsprechend die Rechte hochgesetzt. Auch das hat nichts geholfen.

    Und danach kommt diese Maske und das war es.

    Ob ich eine neue Datenbank einrichte, oder eine bestehende in das Verzeichnis einfüge, das Ergebnis ist immer das gleiche.

    In der Log Datei von Apache2 gibt es auch eine Fehlermeldung, leider lann ich damit nichts anfangen, aber eventuell könnt ihr damit mehr anfangen.

    access.log.txt

    error.log.txt

    Ich hoffe ihr könnt damit etwas anfangen und mir helfen

    LG Robby

    Tastenknecht :

    habe dein Skript ausprobiert und der funktioniert sehr gut. Ist auch etwas einfacher aufgebaut als meiner.

    Werde meine Seite entsprechend anpassen.

    wend :

    Was ich im Internet gefunden haben, Link in #1, war in php geschrieben und ich habe es für meine Zwecke angepasst.

    Außerdem ist PHP die Programmiersprache wo ich mich am besten auskenne.

    Bei den anderen Programiersprachen habe ich meine schwierigkeiten und bin auf Skripte anderer angewiesen.

    Dafür Tastenknecht noch mein herzlichen Dank.

    So sieht bei mir die Oberfläche aus. Auf dieser Seite werden von den Steckdosen die gemessenen Temperatur und die Leistung angezeigt.

    Und nach und nach wird die Seite entsprechend erweitert.

    Unter Punkt #3 habe ich einen Link eingefügt, dort kannst du unter "Das Anmeldeverfahren" genau nachlesen wie die Anmeldung an der Fritzbox funkioniert.

    Das Prinzip ist das du von der Box eine challenge anfordert. Das ist ein Zufallswert. Mit der challenge, Passwort und Benutzername wird im Skript eine SID erzeugt, wo du dich an der Fritzbox anmeldest.

    Dadurch wird vermieden, das der Benutzer und Passwort übermittelt wird.

    Hallo wend,

    Ich habe im Netz diese Seite gefunden und mit der Anleitung von AVM den String zusammen gesetzt.

    Wobei die $sid den Anmelde ID $ain die ID Nummer des Aktor und $switchcmd den Befehl enthält.

    Die SID wird über die Datei SIDerzeugen.sh erstellt und temporär gespeichert.

    In der Fritzbox.dat sind die Zugangsdaten zur Fritzbox abgelegt.

    PHP
    <?php
    // Achtung alle Einträge müssen innerhalb des php Bereichs sein
    // Kopfdaten dürfen nicht verändert werden !!!
    
    //Login Adresse für die Fritzbox
    $ahaurl = 'http://fritz.box/webservices/homeautoswitch.lua';
    $loginurl = 'http://fritz.box/login_sid.lua';
    $username = '';
    $password = 'xxxxxxx';
    ?>

    In der Heizkoerper.dat die die ID Nummern der Heizkörper Regler DECT301 hinterlegt.

    Die Abfrage der Temperatur ist kein Problem mit, damit läuft es bei mir sauber.

    Nur wie muss ich den String abändern, damit ich die neue Temperatur übermitteln kann.

    Das ist mein Problem und hoffentlich kannst du mir dabei weiterhelfen.

    Hallo und einen schönen guten Abend,

    ich könnte noch einmal eure Hilfe gebrauchen.

    Zur Info, habe eine eigene Smart Home auf den Raspberry am laufen. Sie läuft soweit ganz gut.

    Habe jetzt auch von AVM die Schaltsteckdosen eingebunden. Auch das

    funktioniert sehr gut.

    Nun bin ich dabei die DECT301 (Heizkörper Termostat) einzubinden.

    Auch das läuft bei mir soweit das ich die Temperaturen auslesen kann.

    Und zwar verwende ich dazu die befehlszeile:

    $urltmp=$ahaurl."?sid=$sid"."&ain=".rawurlencode($ainHeizk1).'&switchcmd='.$cmdtmp;

    wobei die variable $cmdtmp den entsprechenden Befehl enthält. Beim auslesen der Solltemperatur die variable "gethkrtsoll" für die Soll Temperatur bez. "gethkrtemp" für die aktuelle Temperatur.

    Mein Problem besteht jetzt darin das ich gerne die Temperatur darüber auch einstellen möchte und nicht erst in der Fritzbox anmelden muss.

    In der Beschreibung AHA-HTTP-Interface unter Punkt 1.2 Kommandos und Rückgabwerte sind die Kommandos entsprechend aufgeführt.

    Hier der Auszug zu mein Problem um die neue Temperatur der Fritzbox mitzuteilen:

    sethkrtsoll HKR Solltemperatur einstellen.

                         Mit dem „param“ Get-Parameter wird die Solltemperatur übergeben.

    Temperatur-Wert in 0,5 °C, Wertebereich: 16 – 568 bis 28°C, 16 <= 8°C,

    17 = 8,5°C ..... 56 >= 28°C254 = ON , 253 = OFF

    Mein Problem ist jetzt, das ich den String nicht hinbekomme den ich benötige damit die Fritzbox die neue Temperatur übernimmt.

    Ich habe keine Ahnung wie ich den sehthkrtsoll anpassen muss.

    Kann mir einer evnetuell helfen und mir den fertigen String posten ???

    Ist keiner hier, der mir einen helfen kann?

    Ich habe gelesen das es möglich sei, wenn man ein Skript mit "system" Aufruft, das dann das Haupt Programm weiterläuft.

    Habe das auch schon probliert. In dem ich relais01auto.php im Haupt Programm aufgerufen habe. Hat aber auch nicht funktioniert.

    Es muss doch eine einfache Lösung für mein Problem geben.

    Mein Ziel ist ja nur, das sich die Botton farblich kennzeichen, das die Automatische Bewässerung eingeschaltet ist.

    Danke noisefloor,

    habe mir auch gedacht, das ich nicht der einzige bin, aber wie gesagt bis jetzt habe ich keine Lösung finden können.

    Wenn du mir eine Lösung in Python sagen kannst, ist mir das auch recht. Es muss nicht unbedinkt php sein.

    Leider kenne ich mich in den Programmier Sprachen nicht so gut aus. Das meiste wissen habe ich in PHP deswegen habe ich es in PHP versucht.

    Wobei das auch nur ein kleines Grundwissen ist.

    Ich wäre dir sehr Dankbar wenn du mir einen Lösungsvorschlag in Python geben könntest.

    Hallo liebe Forum Mitglieder,

    ich benötige einmal eure Hilfe, denn auch mit Hilfe von Google fand ich keine Lösung für mein Problem.

    Ich habe ein Raspberry den ich im Garten eingesetzt habe der einige Funktionen ausführt. So zb. die komplette Steuerung meines Fischteich.

    Es fuktioniert alles super. Jetzt möchte ich die Bewässerung des Rasen auch über den Raspberry steuern. Dafür habe ich ein Skript mit 3 Button "Ein, Aus, Auto".

    Das ein und ausschalten ist kein Problem nur die Automatische Bewässerung bekomme ich nicht hin.

    Die Skripte dazu sehen so aus.

    Auszug von SprinklerControl.php

    <article>

    <div id="Menue">

    <?php include('../include/menue.php'); ?>

    </div>

    <div id="Inhalt">

    <?php

    include('../sprinkler_php/datenbank_abfrage.php');

    include('Sprinkler.php');

    ?>

    </div>

    </article>

    <div id="Footer">

    <?php include ('../include/footer.php'); ?>

    </div>

    aus der Datenbank wird der derzeitige Zustand des GPIO ausgelesen und in der Variable $sprinkler01 gespeichert

    Skript Sprinkler.php

    if($sprinkler01 == "aus") {

    echo ".....in der oberen Ebene....";

    echo "<a href='../sprinkler_php/relais01ein.php' target='_self'><button class='buttonSprinklerEin'>ein</button></a>";

    echo "<a href='../sprinkler_php/relais01auto.php' target='_self'><button class='buttonSprinklerAuto'>auto</button></a>";

    }

    if($sprinkler01 == "ein") {

    echo "<a href='../sprinkler_php/relais01aus.php' target='_self'><button class='buttonSprinklerAus'>aus</button></a>";

    echo "<a href='#' target='_self'><button class='buttonSprinklerDeaktiv'>auto</button></a>";

    echo ".......jetzt in der unteren Ebene...";

    }

    if($sprinkler01 == "auto") {

    echo "<a href='#' target='_self'><button class='buttonSprinklerDeaktiv'>aus</button></a>";

    echo "<a href='#' target='_self'><button class='buttonSprinklerDeaktiv'>auto</button></a>";

    include ('../sprinkler_php/relais01auto_aus.php');

    }

    entsprechend der $sprinkler01 werden die Button farblich gestaltet

    Wenn jetzt der Button "auto" betätigt wird rufe ich folgenden Skript auf:

    relais01auto.php

    <?php

    exec("gpio -g write 4 0");

    $variable = "auto";

    $db = new SQLite3("/var/www/html/sqlite/datenbank.db");

    $query = $db -> query ("select * from Garten");

    $query = $db->query("Update Garten set Sprinkler01 ='".$variable."'");

    sleep(60);

    exec("gpio -g write 4 1");

    $variable = "aus";

    $query = $db -> query ("select * from Garten");

    $query = $db->query("Update Garten set Sprinkler01 ='".$variable."'");

    echo "<script LANGUAGE=\"JavaScript\">top.location=\"../web/SprinklerControl.php\"</script>";

    ?>

    Und hier habe ich das Problem.

    Bedingt durch die Wartezeit, wird die Hauptseite nicht neu aufgerufen und dadurch die Button aktualisiert.

    Gibt es eine Möglichkeit, das Skript so auszuführen, das Trotz der Wartezeit das Hauptmenue wieder aufgerufen wird und somit die Button aktualisiert werden?

    Das wäre für mich wichtig, da von der größe meines Rasen die Bewässerung in 4 Bereiche aufgeteilt sind.

    Und ich sehen kann welche Fläche gerade bewässert wird.