Segway Navimov Rasenroboter

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
Rob69
Beiträge: 73
Registriert: 26. Feb 2021 07:38
Answers: 0

Segway Navimov Rasenroboter

Beitrag von Rob69 »

Guten Morgen,

Ich bin gerade dabei meinen Rasenroboter etwas Smart zu machen.
Dies habe ich mittels Alexa Skill gemacht.
Ich kann ihm sagen , er soll mähen, er soll stoppen, er soll parken!
Ich kann ihn fragen was er gerade macht sowie nach seinem Akkustand!
Dafür habe ich für jedes ein virtuelles Switch angelegt und Rules geschrieben.
Jetzt würde ich gerne die Antworten von Alexa in einen String oder Number umwandeln.
Geht das überhaupt?
Desgleichen würde möchte ich das die Switch nach einigen Sekunden wieder auf OFF wechseln!
Hat jemand Ideen?
Möchte dies nur solange nützten bis ev. eine API Schittstelle kommt!

Hier meine Rules, die Auto-off funktioniert nicht!

Code: Alles auswählen

rule "Navimov soll mähen"
when
    Item Navimov_maehen changed to ON
then
    Alexa_EG_Textcomand.sendCommand("Alexa, sage Segway Roboter den Rasenmäher zu starten")
end   

rule "Navimov soll parken"
when
    Item Navimov_parken changed to ON
then
    Alexa_EG_Textcomand.sendCommand("Alexa, sage Segway Roboter den Rasenmäher zu parken")
end 

rule "Navimov soll stoppen"
when
    Item Navimov_stoppen changed to ON
then
    Alexa_EG_Textcomand.sendCommand("Alexa, sage Segway Roboter den Rasenmäher zu stoppen")
end 

rule "Navimov status"
when
    Item Navimov_status changed to ON
then
    Alexa_EG_Textcomand.sendCommand("Alexa, frage Segway Roboter wie der Status des Mähers ist")    
end 

rule "Navimov akkustand"
when
    Item Navimov_akkustand changed to ON
then
    Alexa_EG_Textcomand.sendCommand("Alexa, frage Segway Roboter wieviel Akku der Roboter noch hat")    
end 

rule "Navimov mähen autoff"
when
    Item Navimov_maehen changed to ON                
then 
    createTimer(now.plusSeconds(5)) 
    [|
        sendCommand(Navimov_maehen, OFF)
    ]
end



Erstmal Besten Dank.

Benutzeravatar
udo1toni
Beiträge: 15240
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Segway Navimov Rasenroboter

Beitrag von udo1toni »

Moin,

ich habe Deine Rules mal etwas umformatiert (vor allem, damit sie etwas weniger Platz einnehmen, das erhöht die Lesbarkeit hier im Forum).

Fragen dazu:
1. Von wo werden die Items bedient? Passiert das über die UI? BasicUI, MainUI?
2. Die Rule Navimov mähen autoff ist der Versuch, den Switch wieder auf OFF zu bringen?
3. In welcher Form kommt die Antwort von Alexa?

Mein Vorschlag (falls nicht unbedingt getrennte Switch Items gewünscht sind):
Ein Number Item:

Code: Alles auswählen

Number Navimov_command "Navimov Befehl" {autoupdate="false"} // ungebundenes Item
Eine Rule:

Code: Alles auswählen

rule "Navimov Kommando"
when
    Item Navimov_command received command
then
    if(!(receivedCommand instanceof Number)) {
        logWarn("navimovCommand","Befehl enthält keine Zahl. Abbruch!")
        return;
    }
    var String strCommand = "Alexa, "
    switch((receivedCommand as Number).intValue) {
        case 0: { strCommand = strCommand + "sage Segway Roboter den Rasenmäher zu stoppen"
                  logInfo("navimovCommand","Sende Befehl zum Stoppen des Mähvorgangs")
        }
        case 1: { strCommand = strCommand + "sage Segway Roboter den Rasenmäher zu parken"
                  logInfo("navimovCommand","Sende Befehl zum Parken des Mähroboters")
        }
        case 2: { strCommand = strCommand + "sage Segway Roboter den Rasenmäher zu starten"
                  logInfo("navimovCommand","Sende Befehl zum Starten des Mähvorgangs")
        }
        case 3: { strCommand = strCommand + "frage Segway Roboter wie der Status des Mähers ist"
                  logInfo("navimovCommand","Sende Anfrage zum Status des Mähroboters")
        }
        case 4: { strCommand = strCommand + "frage Segway Roboter wieviel Akku der Roboter noch hat"
                  logInfo("navimovCommand","Sende Anfrage zum Akku Status des Mähroboters")
        }
        default :{
            logWarn("navimovCommand","Unbekannter Befehl. Abbruch!")
            return;
        }
    }
    Alexa_EG_Textcomand.sendCommand(strCommand)
end
In der Sitemap für BasicUI definierst Du z.B. so:

Code: Alles auswählen

Switch item=Navimov_command mappings=[2="Start",1="Park",0="Stopp",3="?",4="Akku"]
In der MainUI kannst Du ein Widget in ähnlicher Form definieren, es benötigt lediglich die fünf Schaltflächen für die Befehle.

Wenn man in der UI ein Widget bedient, wird immer das Event received command getriggert. Mittels autoupdate="false" wird verhindert, dass openHAB den Status des Items automatisch entsprechend dem gesendeten Befehl anpasst. Das Item hält also weiterhin den Status vor dem Befehl.
Die Rule prüft, ob der Befehl gültig ist und führt ihn gegebenenfalls aus. Sollte der Befehl ungültig sein, wird eine entsprechende Warnmeldung geloggt.
Bei einem gültigen Befehl wird der Befehlsstring zusammengesetzt und nach dem Logging auch gesendet.

Für die Auswertung bedarf es ebenfalls einer Rule, welche dann auf die Antwort von Alexa triggert. Da ich nicht weiß, wie die Antwort lautet, kann ich hier erst mal nicht weiter helfen (ich habe keine Alexa). Im Prinzip wird es aber ähnlich laufen, je nachdem in welcher Form die Antwort in openHAB ankommt, kannst Du sie z.B. über ein String Item einer Rule zuführen (diesmal mittels received update, weil ankommende Daten gewöhnlich als Status gewertet werden). Zu Beginn der Auswertung solltest Du prüfen, ob die Antwort überhaupt auf den Mähroboter bezogen ist, ich gehe davon aus, dass z.B. immer "Segway Roboter" in der Antwort enthalten sein wird).
Dann musst Du vermutlich auf das Vorhandensein bestimmter Teilstrings reagieren (meinetwegen "geparkt" oder "gestoppt"), das geht mit der Methode .contains():

Code: Alles auswählen

if(AlexaAntwort.state.contains("geparkt"))... // Das Wort "geparkt" ist enthalten
Und dann könntest Du z.B. mittels Navimov_command.postUpdate(1) das Befehlsitem auf den entsprechenden Status setzen (falls das sinnvoll ist) oder den Status in ein anderes Item schreiben - gerne auch als String in ein String Item, der Phantasie sind da kaum Grenzen gesetzt...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Rob69
Beiträge: 73
Registriert: 26. Feb 2021 07:38
Answers: 0

Re: Segway Navimov Rasenroboter

Beitrag von Rob69 »

Hallo,

Das ist ja auch eins meiner Probleme :

Im Log Viewer erscheint keine Antwort, da ich noch nicht herausgebracht habe auf welchen Channel die Antwort kommt!
Bis jetzt jetzt kommt die Antwort durch die Alexa.


Gruß Rob69

Benutzeravatar
udo1toni
Beiträge: 15240
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Segway Navimov Rasenroboter

Beitrag von udo1toni »

Na ja, Du wirst den Channel schon einem Item zuordnen müssen. Welcher Channel das genau ist, das musst Du in der Doku zum Alexa Binding nachlesen (wie gesagt, "isch abe gar keine Alex...!")
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Rob69
Beiträge: 73
Registriert: 26. Feb 2021 07:38
Answers: 0

Re: Segway Navimov Rasenroboter

Beitrag von Rob69 »

Mahlzeit,

Das ist ja auch mein Problem , ich habe mittlerweile alle Channels, auch die unter advanced ausprobiert.
Anscheinend gibt es keinen Channel hierfür!
Oder doch??? :ugeek:

Gruß Rob69

Harka
Beiträge: 487
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Segway Navimov Rasenroboter

Beitrag von Harka »

Moin,
ich kann mich nicht daran erinnern, schon mal Antworten von Alexa gehen zu haben. Wenn ich sage "Alexa, Temperatur" schnattert die Kiste ja ein wenig. Diese Antwort kam hier noch nie an.

Benutzeravatar
udo1toni
Beiträge: 15240
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Segway Navimov Rasenroboter

Beitrag von udo1toni »

Ich habe ja keine Alexa, aber ich kann mir gut vorstellen, dass diese Kommunikation tatsächlich nur in einer Richtung abläuft.

Ein Argument mehr, diesen Quatsch zu lassen. (sorry...)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten