homeputer versus ioBroker

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

Lars
Beiträge: 160
Registriert: 17.07.2006, 10:56

Re: homeputer versus ioBroker

Beitrag von Lars » 25.04.2018, 09:53

Hallo,

was hier nur am Rande von Familienvater erwähnt wurde ist, dass es ganz viele spezielle Anweisungen und Funktionen in HPCL gibt die ganz speziell für die Automatisierung sind und die Programmierung stark vereinfachen.

Das ist ja nicht nur die Warte-Anweisung, sondern z.B. auch "einschalten für .. ", Schaltdauer (benutze ich sehr oft) ,Temperaturabsenkung, Setzezeittabellenwert, Feiertag, Sendesms und vieles mehr. Guck mal hier:
http://www.cl-control.de/CL-Software/ma ... sungen.htm

Das alles irgenwie in Javascript basteln? Nee danke.

Ganz abgesehen von den fertig eingebauten Sachen wie Zeittabellen, Anwesenheitssimulation und den unterschiedlichen Aktivierungsmöglichkeiten für Makros. Dass man mit iobroker auch viele andere Systeme steuern kann ist sicher ein Vorteil. Nice to have. Aber dafür auf die vielen Vorteile bei HPCL verzichten und als Nicht-Programmierer mit Javascript rumschlagen. Kommt für mich nicht in Frage.

LG
Lars

Wolle
Beiträge: 41
Registriert: 05.09.2007, 08:09
Wohnort: Wuppertal

Re: homeputer versus ioBroker

Beitrag von Wolle » 01.05.2018, 19:46

Hallo zusammen,

HPCL läuft wunderbar auf einer normalen CCU und es gibt jede Menge HomeMatic-Module für alle Anwendungen. Darum würde es meiner Meinung nach doch nur Sinn machen etwas anders einzusetzen wenn man unbedingt irgendwelche Geräte braucht die es bei HM nicht gibt - und wenn man dann noch alles was man will wirklich auch in Javascript programmieren kann. Und Javascript ist nun mal keine speziell für Hausautomation ausgelegte Sprache wie die Programmiersprache von HPCL.
Wenn es darum geht, dass man wegen der Geräteanzahl mit einer CCU nicht auskommt und deshalb stärkere Hardware braucht gibt es die c-comatic oder ja jetzt auch die neue CCU3 oder Raspberrymatic.

Ich denke io-broker ist alleine von seiner Serverarchitektur her für eine normale Hausautomation viel zu aufwändig was Hardware und Programmierung angeht. Abgesehen davon, dass man dafür Javascript gut beherschenn muss um da was zu hinzubekommen. Meiner Meinung nach nur was für Freaks.

Grüsse
Wolle

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: homeputer versus ioBroker

Beitrag von Homoran » 01.05.2018, 21:23

Wolle hat geschrieben:Ich denke io-broker ist alleine von seiner Serverarchitektur her für eine normale Hausautomation viel zu aufwändig was Hardware und Programmierung angeht.
Hast du schon mal mit ioBroker gearbeitet?
Wolle hat geschrieben:Abgesehen davon, dass man dafür Javascript gut beherschenn muss um da was zu hinzubekommen.
Das stimmt nu überhaupt nicht. Ich kann kein Wort javascript und komme sehr gut mit ioBroker klar.
vieles läuft Out of the Box, einiges geht mit node-red, Szenen-Adapter und wenn es schon unbedingt javascript sein muss (für spezielle Wünsche) dann kann man das auch mit Blockly machen - einfach Klötzchen verbinden.
Wolle hat geschrieben:Meiner Meinung nach nur was für Freaks.
Das stellt aber ein falsches Bild von ioBroker dar.


Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

apollon77
Beiträge: 308
Registriert: 12.10.2013, 12:32

Re: homeputer versus ioBroker

Beitrag von apollon77 » 01.05.2018, 22:56

Wolle hat geschrieben: Ich denke io-broker ist alleine von seiner Serverarchitektur her für eine normale Hausautomation viel zu aufwändig was Hardware und Programmierung angeht. Abgesehen davon, dass man dafür Javascript gut beherschenn muss um da was zu hinzubekommen. Meiner Meinung nach nur was für Freaks.
Würde mich ähnlich wie Rainer auch interessieren wie Du zu diesen Erfahrungen gekommen bist.

Die Hardware läuft ab Raspi aufwärts. Was ist daran aufwändig? Es gibt genügend User (was auch die Podiumsfrage auf dem HM-Usertreffen gezeigt hat) die keine CCU mehr haben sondern Raspis einsetzen. Ist das damit auch "viel zu aufwändig"?
Es ist korrekt: Man KANN mit iobroker aufwändige Systeme bauen mit Slaves im ganzen Haus verteilt für spezielle Aufgaben und sowas. Aber das muss niemand.

JavaScript-Kenntnisse sind sicherlich nicht hinderlich um eigene Skripte zu schreiben, man kann es aber auch per Blockly grafisch "Zusammenklicken" oder per node-red als Flows (Easy-Smarthome hat da auf dem Usertreffen auch sowas vorgestellt erinnere ich mich). Und besser als TCL ist JavaScript allemal ;-) (my opinion).

Wenn Du schwierigere Erfahrungen mit ioBroker gemacht hast wäre ich (gern als PN) sehr an den Details interessiert ...

Ingo

Wolle
Beiträge: 41
Registriert: 05.09.2007, 08:09
Wohnort: Wuppertal

Re: homeputer versus ioBroker

Beitrag von Wolle » 04.05.2018, 12:57

Hallo Homoran und apollon77,

hier meine Antwort:
Hast du schon mal mit ioBroker gearbeitet?
Ja, mit dem fertigen SD-Image auf einem Raspi 3.
Der Import der Geräte von der CCU hat gut funktioniert, die Oberfläche ist schön gemacht.
Ich habe einige Zeit gespielt, aber als ich dann versucht habe einen einfachen Zweizeiler für einen Bewegungsmelder zu machen fingen die Probleme an.
Hier die Programmierung in HPCL, Aktivierung bei Empfang:

Code: Alles auswählen

wenn selbst eingeschaltet und Uhrzeit zwischen Sonnenuntergang und Sonnenaufgang dann
  LichtHaustuer einschalten für 3 Minuten
endewenn
Dann ging die Sucherei los: Wie aktiviert man ein Programm eventgesteuert, also so dass es nicht als Regel dauend läuft, sondern nur wenn ein Gerät eine Meldung geschickt hat. Geht das überhaupt?
Und:
Wie sieht dieser simple Zweizeiler in ioBroker-Javascript denn aus? Wie schalte ich ein Gerät nur für eine bestimmte Zeit ein ohne es später mit einem anderen Programm ausschalten zu müssen? Egal ob mit Blockly oder Javascript. Ich bin kein Javascript-Experte, habe damit aber schon viel bei der Webseitenprogrammierung gemacht. Wäre mir dann lieber als Blockly.
Würde mich mal interessieren wie dieser Zweizeiler in ioBroker mit Javascript umgesetzt wird.
In einem anderen Fall schalte ich ein Gerät immer nach maximal 1 Stunde aus, indem das Objekt des Geräts dieses winzige Programm bekommt:

Code: Alles auswählen

wenn selbst eingeschaltet und Schaltdauer(selbst) > "01:00:00" dann
  selbst ausschalten
endewenn
Ich habe keine ähnliche Funktion wie Schaltdauer gefunden um festzustellen wie lange ein Gerät schon läuft.
Das wichtigste bei meiner Hausautomation sind die intelligenten Funktionen und dass ich die einfach realsieren kann. Dazu kann ich nicht jedesmal erst lange im Forum rumfragen. Und ich habe in HPCL etliche tausend Programmzeilen.
Daher habe ich das Experimnet an der Stelle abgebrochen nachdem ich meine eignene Erfahrungen gemacht habe.
Die Hardware läuft ab Raspi aufwärts
Ok, aber den brauche ich doch erstmal zusätzlich zu einer CCU wenn ich nicht irgendwelche Container Lösungen mit eigener drangebastelter externen Antenne nehmen will. Und das Wort aufwärts sagt auch einiges. Daher ist es für mich eine Serverarchitektur, und so wird es ja auch oft bezeichnet.

Ich habe es probiert, meine Erfahrungen gemacht und meine Meinung dazu hier in meinem Betrag geschrieben, das es meine Meinung ist habe ich ja auch geschrieben.
Das stellt aber ein falsches Bild von ioBroker dar.
Es war meine Meinung! Wenn jemand anderere Meinng seit ist es ja ok. Was ich nicht richtig finde ist so zu tun als sei das eine Lösung mit der jeder schnell klarkommen kann.
Das ist definitiv nicht so! Meine Meinung! Und die darf ich haben weil wir in Deutschland Meinungsfreiheit haben.

Liebe Grüsse
Wolle
Zuletzt geändert von Wolle am 04.05.2018, 13:13, insgesamt 4-mal geändert.

Benutzeravatar
eric2905
Beiträge: 872
Registriert: 04.04.2011, 13:50

Re: homeputer versus ioBroker

Beitrag von eric2905 » 04.05.2018, 13:07

Hi Wolle,
Wolle hat geschrieben:Wie aktiviert man ein Programm eventgesteuert, also so dass es nicht als Regel dauend läuft, sondern nur wenn ein Gerät eine Meldung geschick hat. Geht das überhaupt?
Dann schau Dir mal diese Doku zum Javascript an : Link
In Blockly, falls Dir Javascript nicht liegt, geht das auch.

Auch die anderen Themen sind alle mit Javascript, Blockly oder ggf. sogar (je nach Anwendungsfall) mit einem Kalender und dem iCal-Adapter lösbar (liegt an der Art des Einschaltens und der Dauer).

Gruß,
Eric
-----------------------------------------------------------------------------------------------
RaspberryMatic (2.35.16.20180708) auf Pi3 mit zig Aktoren, usw.
ioBroker auf Proxmox-VM auf Intel NUC D54250WYK (Core i5-7260U) mit 16 GB RAM und 64 / 256 GB SSD

apollon77
Beiträge: 308
Registriert: 12.10.2013, 12:32

Re: homeputer versus ioBroker

Beitrag von apollon77 » 04.05.2018, 13:09

Hi Wolle,

niemand hat irgendetwas gegen Deine Meinungsfreiheit gesagt (und würde mir im Traum auch niemals einfallen!), die Aussage/Meinung "nur was für Freaks" oben kam nur sehr Plakativ rüber. Daher haben wir nachgefragt um zu verstehen was für Dich "Freak" bedeutet bzw auf welchen Erfahrungen das aufsetzt.
Es ist auch den iobroker-Entwicklern bewusst das vor allem beim Thema "Einfache Regeln auch einfach erstellen" noch Nachholbedarf besteht und da wird sich auch noch etwas tun.

Zu Raspi: Ich erinnere mich das Homeputer auch auf einem anderen Rechner als der CCU läuft, der dann die ganze Zeit an sein muss. Ist das noch so?

Für Deine Bitte mal zu sagen wie das in ioBroker aussehen kann eine Frage: Was bedeutet das "selbst" in deinen Skripten oben? Bezeichnet es das entsprechende Device?

Ingo

Wolle
Beiträge: 41
Registriert: 05.09.2007, 08:09
Wohnort: Wuppertal

Re: homeputer versus ioBroker

Beitrag von Wolle » 04.05.2018, 13:29

Hallo,

danke für die Infos.

@Ingo,
HPCL läuft in der CCU, nur wenn man mehrere CCUs braucht weil nicht alle Geräte in eine passen kann man eine Zentrale (c-comatic, auch ein Raspi) benutzen, die CCUs sind dann nur noch Schnittstellen (wie bei ioBrocker).

"selbst" ist ähnlich dem "this" aus der C++-Programmierung, es bezeichnet das Objekt in dem das aktuelle Progarmm steht. Damit kann man z.B.Programmteile in andere Objekte kopieren ohne Änderungen. Sonst steht an Stelle des "selbst" ein Ojektname wenn andere als das eigene Objekt angesprochen werden soll.

Nochmal: Ich habe nichts gegen ioBroker, es ist sehr gut gemacht. Es erfodert aber meiner Meinung nach ein relativ hohes technische Verständnis und eine sehr intenive Beschäftigung mit dem Thema. Das meinte ich mit Freaks. Es sollte nicht abwertend rüberkommen.

Grüsse
Wolle

pix
Beiträge: 608
Registriert: 23.01.2012, 15:40
Danksagung erhalten: 1 Mal

Re: homeputer versus ioBroker

Beitrag von pix » 04.05.2018, 13:44

Hallo Wolle,
Wolle hat geschrieben: Hier die Programmierung in HPCL, Aktivierung bei Empfang:

Code: Alles auswählen

wenn selbst eingeschaltet und Uhrzeit zwischen Sonnenuntergang und Sonnenaufgang dann
  LichtHaustuer einschalten für 3 Minuten
endewenn
Dann ging die Sucherei los: Wie aktiviert man ein Programm eventgesteuert, also so dass es nicht als Regel dauend läuft, sondern nur wenn ein Gerät eine Meldung geschickt hat. Geht das überhaupt?
Und:
Wie sieht dieser simple Zweizeiler in ioBroker-Javascript denn aus? Wie schalte ich ein Gerät nur für eine bestimmte Zeit ein ohne es später mit einem anderen Programm ausschalten zu müssen?
hier ein Beispiel für die den Javascript-Code in ioBroker. Ich weiß nicht genau, was du mit Aktivierung bei Empfang meinst. Evtl. Anwesenheit? Ich nenne es mal Trigger:

Code: Alles auswählen

const idHaustuerLicht = "hm-rpc.0.SERIENNUMER.1.STATE";         // anpassen, Datenpunkt des Homematic-Adapters für HM-Aktor
const idTrigger = "DATENPUNKT_AUSLÖSER";                       // anpassen, irgendeindein Datenpunkt

on({id: idTrigger, change: "ne"}, function (obj) {              // Überwachung Trigger auf Änderung
    if ( isAstroDay() && obj.state.val) {                       // wenn Zeit zwischen Sunrise und Sunset und Trigger an
        setState(idHaustuerLicht, true);                        // Licht einschalten
        setStateDelayed(idHaustuerLicht, false, 3 * 60 * 1000); // verzögert nach 3min ausschalten
    }
});
Wolle hat geschrieben:

Code: Alles auswählen

wenn selbst eingeschaltet und Schaltdauer(selbst) > "01:00:00" dann
  selbst ausschalten
endewenn

Für den zweiten Code gibt es ggf. diese Übersetzung. Die Einschaltdauer wird nicht ab Werk mitgezählt, sondern nur der Einschalt/Ausschaltzeitpunkt (Timestamp). Daraus lässt sich in einem weiteren Skript die Einschaltdauer (zum Beispiel zur Anzeige in der Visualisierung) ausrechnen.
Falls aber ein einfaches Ausschalten nach X Zeit ausreicht, dann geht das so:

Code: Alles auswählen

const idHaustuerLicht = "hm-rpc.0.SERIENNUMER.1.STATE";          // anpassen, Datenpunkt des Homematic-Adapters für HM-Aktor

on({id: idHaustuerLicht, change: "ne"}, function (obj) {         // Überwachung des Aktors auf Änderung AN/AUS
    clearStateDelayed(idHaustuerLicht);                          // alle bisherigen Timer löschen
    if (obj.state.val) {                                         // wenn Aktor angeschalter wurde
        setStateDelayed(idHaustuerLicht, false, 60 * 60 * 1000); // verzögert nach 60min ausschalten
    }
});
Es geht auch in Kurzform (möglichst wenig Zeilen, weniger Code und weniger Übersichtlichkeit):

Code: Alles auswählen

on("hm-rpc.0.SERIENNUMER.1.STATE", function (obj) {
    clearStateDelayed("hm-rpc.0.SERIENNUMER.1.STATE");
    if (obj.state.val) setStateDelayed("hm-rpc.0.SERIENNUMER.1.STATE", false, 60 * 60 * 1000);
});
Für mehr Übersichtlichkeit kann man auch noch Logausgaben einbauen, die einen über die Aktionen des Skripts informieren. Hier würde sich anbieten, das verzögerte Ausschalten zu dokumentieren:

Code: Alles auswählen

setStateDelayed(idHaustuerLicht, false, 60 * 60 * 1000, function() {
            log("Licht Haustür nach einer Stunde ausgeschaltet");
        }); 
Durch das schmale Layout der Code-Anzeige hier im Forum bei schmalem Browserfenster erscheint das Script wegen der angehängten Kommentare etwas unübersichtlich. Davon sollte man sich nicht abhalten lassen. Also bitte, den Browser schön breit ziehen.

In der Homematic Welt gibt es noch den Datenpunkt ON_TIME. Den kann man natürlich auch nutzen und dadurch Logik vom Backend in den Aktor bringen: ON_TIME in ioBroker setzen

Gruß
Pix
150 Kanäle in 75 Geräten und 103 CUxD-Kanäle in 25 CUxD-Geräten (HomeMatic, FS20), CCU1 FW1.519, AddOns: CUxD 1.0, dropbear, E-Mail 1.2, ftp_server und regaWatchdog.
Logik und Visualisierung mit ioBroker auf Mac OS X Node.js. Eingebundene Systeme: Sonos, Rademacher Homepilot, Roomba, Network-OWL. Danke für das Homematic-Inventur-Skript von EnergyStar

Bluefox
Beiträge: 779
Registriert: 20.02.2011, 19:55

Re: homeputer versus ioBroker

Beitrag von Bluefox » 04.05.2018, 14:11

Wolle hat geschrieben: Hier die Programmierung in HPCL, Aktivierung bei Empfang:

Code: Alles auswählen

wenn selbst eingeschaltet und Uhrzeit zwischen Sonnenuntergang und Sonnenaufgang dann
  LichtHaustuer einschalten für 3 Minuten
endewenn
Dann ging die Sucherei los: Wie aktiviert man ein Programm eventgesteuert, also so dass es nicht als Regel dauend läuft, sondern nur wenn ein Gerät eine Meldung geschickt hat. Geht das überhaupt?
Und:
Wie sieht dieser simple Zweizeiler in ioBroker-Javascript denn aus?
Ganz kompakte Form (aber sehr unübersichtlich):

Code: Alles auswählen

on({id: "SCHALTER_ID", val: true}, () => {
     if (compareTime('sunrise', 'sunset', 'between'))  {
         setState("LAMPE_ID", true); 
         setStateDelayed("LAMPE_ID", false, false, 3 * 60 * 1000, true));
     }
}
Geht natürlich auch nicht kompakt.

Zu:

Code: Alles auswählen

wenn selbst eingeschaltet und Uhrzeit zwischen Sonnenuntergang und Sonnenaufgang dann
  LichtHaustuer einschalten für 3 Minuten
endewenn
Man vergisst natürlich dabei, dass diese HPCL Sprache auch bestimmte Regeln hat. Ich bin ziemlich sicher, dass ich so was nicht schreiben darf:

Code: Alles auswählen

Mach LichtHaustür an für 0,05 Stunden falls mich jemand betätigt und die Zeit mittendrin Abendrot und Tagesanfang ist
D.h. ich muss auch die Sprache und die Regeln lernen.

Bezüglich Schaltdauer in ioBroker sieht das so aus:

Code: Alles auswählen

Date.now() - obj.state.lc
aber Vielleicht mache ich extra dafür eine Funktion. Danke für die Idee.

Antworten

Zurück zu „homeputer CL“