Ankündigung

Einklappen
Keine Ankündigung bisher.

Weckzeiten aus Chumby holen

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] Weckzeiten aus Chumby holen

    Hallo,

    ist es möglich Daten aus einem anderen Pc zu holen um diese dann auszuwerten ?
    Mein Wecker schreibt in eine datei (siehe Anhang) die Weckzeiten usw.

    Ich möchte gerne, dass diese dann ins Wiregate geholt werden um diese dann auf dem Bus parat zu haben.

    Die Daten liegen beim Chumby im Ordner: /psp/
    Auf den Chumby kann per ssh zugegriffen werden.

    Gruß Manuel
    Angehängte Dateien

    #2
    hab noch keinen Chumby (soll noch kommen wenn es eine. anständigen mit Batterie Recovery gibt) und bin auch kein Linux Pro, würde mir das ganze aber in etwa so vorstellen:

    Variante 1: im Chumby den Ordner mit der Konfig "freigeben" und das nachts mit nem Skript auf dem Wiregate holen, parsen und die Weckzeit auf den Bus schicken oder einfach merken und zur Uhrzeit ne Schalthandlung ausführen
    Variante 2: die Konfig vom Wecker auf ein Skript umbiegen, es gibt also keine Datei sondern sowas wie einen Service... wenn die Weckzeit verändert wird und damit in die Datei geschrieben wird, wird sie tatsächlich in den Service geschrieben... dieser speichert die sich (damit ein auslesen der "Datei" möglich ist, wird die Wecker App bestimmt brauchen) und sendet sie gleichzeitig auf den Bus bzw. an das Wiregate.

    Ich bevorzuge Variante zwei, weil kein Polling notwendig. Denn welche Zeit ist für das Abholen des Weckerwertes passend oder soll das regelmäßig gepollt werden? Finde ich nicht gut. Meiner Meinung nach muss Variante 2 möglich sein, aber da der Fall bei mir noch nicht akut ist, habe ich mich auch noch nicht näher damit beschäfftigt.
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    Kommentar


      #3
      Hmmm...

      Es ist bestimmt einfacher über ein Perl Plugin einfach iene SSH Verbinung aufzubauen und den Inhalt der Datei einzulesen. Der Vorteil dabei st, dass am Chumby selber nichts verändert werden muss. Damit ist diese Version bei jedem Laien lauffähig. Das bedingt aber das Pollen. 1x pro minutte würde vermutlich reichen ist aber nicht die Luxusvariante.

      Variante 2 hat schon seinen Reiz aber ist dan nur noch für versierte Bastler und Profis. Dasshalb würde ich Variante 1 bevorzugen, da auch Anfänger dann etwas davon haben. Sie ist also Massen tauglicher
      Gruss Patrik alias swiss

      Kommentar


        #4
        Sollte keine Zauberei sein, vermutlich kann man das ja auch direkt per HTTP holen; das googleweather-Plugin von Bodo tut sowas ähnliches: XML abrufen und auswerten.

        Makki
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar


          #5
          Hallo,

          könnt ihr mir dabei helfen, wie ich da vorgehen muss. Bin leider nicht in der Lage sowas realisieren zu können.

          Danke und Gruß Manuel

          Kommentar


            #6
            @makki:

            Leider kann die Zeit nicht ohne weiteres über http abgerufen werden. Dazu müsste der intene Webserver überarbeitet werden. Die sicherste Methode die mit allen Chumby ab Werk funktioniert ist das abrufen über ssh. Den Code für die ssh-verbindung habe ich und auch die benötigten Befehle um die Datei zu öffnen (in PUTTY wird der inhalt zurückgegeben). Was ich nicht hinbekomme ist, dass der Inhalt der Datei in eine Variabel des Plugin übernommen wird. Vieleicht hast du da eine Idee.
            Gruss Patrik alias swiss

            Kommentar


              #7
              Ich kenn den Chumby ja nicht/nur aus den Diskussionen hier, das XML per scp zu holen und zu parsen ist aber "fast" dasselbe, zeig doch mal was Du hast..

              Makki
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar


                #8
                Also es ist erst gaaaanz im Anfangsstadium...

                Code:
                my $host = '192.168.1.7';
                
                open(my $ssh, "| root\@" . $host);
                print $ssh "cd /psp/\n";
                print $ssh "cat alarms\n";
                close($ssh);
                die Ausgabe von

                Code:
                print $ssh "cat alarms\n";
                Soll in eine Variabel geschrieebn werden. Den String muss man dann nur noch in seine Einzelteile zerlegen und die Wertre auf den BUS senden oder was auch immer.
                Gruss Patrik alias swiss

                Kommentar


                  #9
                  Ich hab nichts gegen Shell-Hacks, ganz im Gegenteil, aber ich würde da doch sowas wie Net::SSH nahelegen
                  apt-get install libnet-ssh-perl vorher oder im Webif (Updates) libnet-ssh-perl->Paket installieren

                  Makki
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar


                    #10
                    OK. Danke für die Starthilfe.

                    ssh paket ist installiert und der Code modifiziert:

                    Code:
                    use Net::SSH qw(ssh);
                    
                    my $command = 'cat /psp/alarms';
                    
                    ssh("root@$host", $command);
                    Leider kann ich als Host keine IP angeben Und wie ich mit dieser Syntax die Ausgabe der Datei "Alarms" in eine Variabel schreibe ist mir auch noch nicht ganz klar.
                    Gruss Patrik alias swiss

                    Kommentar


                      #11
                      1) Can't use string ("172.17.2.65") as an ARRAY ref while "strict refs" in use... -> meinte ich kürzlich mit dem verwenden von Variablen in strings: wenn da ein @ davor steht ists aus.. immer schön concat, dann passiert das nicht (ausser man weiss exakt was man tut)
                      Also
                      Code:
                      my $result = ssh_cmd("root@" [B]. $host[/B], $command);
                      Insgesamt sähe es dann so aus:
                      Code:
                      # needs apt-get install libnet-ssh-perl
                      use Net::SSH qw(ssh[B]_cmd[/B]);
                      my $command = 'cat /proc/version';
                      my $host = "172.17.2.65";
                      my $result = ssh[B]_cmd[/B]("root@" . $host, $command);
                      
                      return $result;
                      @swiss: ansonsten gut ausgepasst: bei use ... nur das importieren was man auch wirklich braucht, verdammt gute Idee
                      Nach dem testen würde ich aber noch zwei Dinge anfügen:
                      - das ist a****langsam, per HTTP, Push o.ä. wäre deutlich besser
                      - lieber doch Net::SSH::Perl (sieht dann etwas anders aus aber ich will jetzt keinen verwirren)
                      - man muss mit dem Modul vorher den ssh-key zum ziel-Host schaffen ("ssh-copy-id root@host" im optimalfall)

                      Makki
                      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                      -> Bitte KEINE PNs!

                      Kommentar


                        #12
                        Hallo makki

                        nun bekomme ich wehnigstens eine Antwort aber wie zu erwarten kommt die Meldung:

                        Host key verification failed.
                        Leider weiss ich nicht genau wie das mit dem ssh-key funktioniert.

                        Zitat von makki
                        - lieber doch Net::SSH::Perl (sieht dann etwas anders aus aber ich will jetzt keinen verwirren)
                        Dieses Thema habe ich vorher schon überflogen und empfand es eigentlich als einfacher aber da du von Net::SSH gesprochen hast, habe ich es damit versucht. Die Frage ist nun was ist besser geeignet? Je nach dem baue ich den Code auf NET::SSH oder auf NET::SSH::Perl auf. Hab das mal kurz getestet aber dazu wird ein neues Paket benötigt. Wie lautet der Paketname von NET::SSH::Perl?
                        Gruss Patrik alias swiss

                        Kommentar


                          #13
                          Einmal auf der Konsole:
                          ssh root@192.168.1.7
                          + yes
                          sollte das mit Host-key verification failed lösen.

                          Und ein ssh-copy-id root@192.168.1.7 den login; evtl. vorher ein
                          ssh-keygen

                          Wie lautet der Paketname von NET::SSH::Perl?
                          Hmm, da hab ich etwas gepennt, Paket: gibbet nicht und es hängt ein wirklich elends langer Rattenschwanz dran!
                          Ich habs mal ins repository hochgeladen aber bitte per Konsole
                          apt-get update; apt-get install libnet-ssh-perl-perl
                          weil es fehlen sonst noch ein paar dependencies

                          Das bauen der Packerl war jetzt grad ein ganz klein bisschen arg blutig:, freundschaftlicher Tipp, ich hab da echt Übung: don't try this at home
                          Ungetestet, ich hoffe es fehlt nichts.. (aber ich fürchte es fehlt in den depends irgendwas, ich hab bei 30 das zählen aufgehört..)

                          Makki
                          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                          -> Bitte KEINE PNs!

                          Kommentar


                            #14
                            Hallo,

                            danke das ihr meiner Sache nachgegangen seid.
                            Leider verstehe ich, von dem was ihr schreibt nur Bahnhof.

                            @Makki.

                            Du schreibst was von http.
                            Ich kann mir die Weckzeiten im Browser anzeigen lassen
                            (http://192.168.8.23/cgi-bin/custom/alarms.pl)

                            Siehe Anhang.

                            Gruß Manuel
                            Angehängte Dateien

                            Kommentar


                              #15
                              Naja, was geht rüber, wie kommen die Daten an den Client? FF+Firebug installieren da sieht man viel..

                              Makki

                              P.S: @manu wenn dann bitte im Text und im Screenshot die IP verstecken - hilft aber eh nix weder gegen mich noch gegen professionelle Hacker, weil wenn ich wollte und das rechtlich dürfte (oder mir Gesetze egal wären) - dann wäre es das gerinste herauszufinden ob Du 192.168.x oder y da hast..
                              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                              -> Bitte KEINE PNs!

                              Kommentar

                              Lädt...
                              X