Sming als Alternative zu Arduino

Begonnen von Pf@nne, 25 März 2016, 20:01:47

Vorheriges Thema - Nächstes Thema

Pf@nne

Moin,

Patrick hat seinen ESP8266-RGB-Controller mit nicht mit der ArduinoIDE umgesetzt.
Stattdessen hat er das ganze Projekt mit Sming umgesetzt.
https://forum.fhem.de/index.php/topic,34464.0.html

Programmiert wird dann unter Eclipse, Sming stellt dann eine Art Frontend des Hersteller-SDK.
So kann in gewohnter Arduinomanier programmiert werden.

Wer nutz noch Sming?
Was waren ggf. die Gründe für den Umstieg?

Ich habe für mich beschlossen das mal zu testen.
Der Installations und Konfigurationsaufwand ist nicht ganz unerheblich, aber ja nur einmal vorhanden.

http://www.s6z.de/cms/index.php/homeautomation-homecontrol/hardwareplattformen/esp8266/135-sming-alternative-zur-arduinoumgebung
http://www.s6z.de/cms/index.php/homeautomation-homecontrol/hardwareplattformen/esp8266/136-sming-installation
http://www.s6z.de/cms/index.php/homeautomation-homecontrol/hardwareplattformen/esp8266/137-sming-hello-world

Vielleicht haben ja noch mehr Bastler Interesse an dieser Alternative und berichten über ihre Erfahrungen.


Gruß
Pf@nne
FHEM auf: DS415+ (Master), Raspberry Pi 2

ext23

Nabend,

ist das jetzt nur für den ESP gedacht? Oder generell Arduinos?

Ich benutze seit Jahren schon AVR Studio. Mittlerweile kann man dort auch Arduino Projekte öffnen/kompilieren. AVR Studio benutze ich wegen dem debuggen, das kann die Arduino IDE ja nun überhaupt nicht wenn ich mich recht erinnere. Auch zum flashen und setzen der Lock- und Fusebits ist das bequemer, so was geht mit der Arduino IDE auch nicht. Aber ich nutze auch nicht die Arduino Umgebung für meine Projekte. Aber es geht wie gesagt mit der neuen Version.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Pf@nne

Moin,

Sming ist speziel für den ESP8266 gemacht.

In Sachen Debugging ist Eclipse natürlich weit vor der ArduinoIDE, ist aber für den Anfang ein schönes Installationsgefriemel.
Auch die Arduino Sketche lassen sich nicht mehr 1:1 kompilieren.

Ich werde das mal beobachten......
FHEM auf: DS415+ (Master), Raspberry Pi 2

mrpj

Den Thread gerade erste gesehen... wegen dem RGBWW Controller hatte ich die letzten Wochen mehr mit Sming zu tun und hab noch ein paar Punkte, die vielleicht für den einen ganz spannend sind:


  • Sming ist event basiert

Bei Arduino Code werden z.B. webrequests via polling im loop() { } abgehandelt. Bei Sming wird die Asynchrone Struktur des espressif SDKs an den Nutzer weiter gereicht - bedeutet im Beispiel webserver, dass Anfragen dann abgehandelt werden, wenn diese beim Controller eintreffen.

Wenn es darum geht mehrere Anfragen zu verarbeiten, ist ein event-basiertes System, wenn es nur einem Thread wie beim Arduino IDE gibt, immer im Vorteil. Anfragen werden "schneller" abgehandelt. Es wird kein unnötiger Code der im loop vorhanden ist zwischendurch ausgeführt z.B.


void loop () {
webserver->handleclient();
mqtt->handlerequest();
tcpserver->handlerequest();
udpserver->handlerequest();
leds->refresh();
(....)
}


In Sming fällt die permanente Ausführung von diesen Routinen weg. Einzig und allein in dem Beispiel, benötigt es einen regelmäßigen Timer der "leds->refresh();" durchführt (im RGBWW Controller sind das 20ms)



  • Sming stellt Methoden zur Verfügung die auf den espressif SDK Implementierungen basieren

Während der Entwicklung des RGBWW Controllers bin ich über die Fallstricke des Arduino SDKs gestolpert, dass dort viele der Funktionalitäten die eigentlich von espressif zur Verfügung gestellt werden, nochmals neu implementiert wurden und damit eine Reihe von Problemen mit sich bringt.
Konkret war es bei dem RGBWW Projekt die Nutzung des PWMs. Auch wenn Espressif eine PWM Funktionalität zur Verfügung stellt, nutzt die Arduino Variante eine Implementierung die mit dem Timer/Interrupts vom Wifi Modul gekoppelt ist. Bei verschiedenen Frequenzen und Werten hatte ich damit dann regelmäßige Aussetzer/Probleme.
Die Implementierung des Arduino SDKs verändert einige Optionen/Register, so dass es mir nicht mehr möglich war die PWM SDK Funktionen zu nutzen.




  • Sming hat einen eigenen Bootloader (rBoot)

Der Bootloader von raburton (rBoot) ist fest in Sming integriert. Der Bootloader bietet z.B. die Möglichkeit vor dem starten schon nach OTA updates zu suchen. Auch ist es möglich ihn als echten Bootloader zu betreiben, der es ermöglicht über verschiedene Methoden roms/dateisystem je nach wunsch zu switchen, bevor diese gestartet wird.

Gleichzeitig ist es möglich auch mehr als nur 2 roms im Flash zu haben.


  • Sming ist als BETA für den RTOS SDK vorhanden

Mit dem ESP32 hat espressif angekündigt - vorerst nur den SDK, der auf FreeRTOS basiert, zur Verfügung zu stellen. Es gibt derzeit schon eine Version von Sming die auf dem RTOS SDK basiert - Funktionalität wird gerade nach und nach portiert.

Der Arduino Aufsatz ist noch nicht soweit und basiert sehr stark auf dem espressif NON-OS SDK



Ich bin sehr positiv gegenüber Sming eingestellt und habe bei der Entwicklung des RGBWW Projekts immer wieder patches und Funktionsergänzungen zu Sming geleistet. Auch wenn der erste Aufwand etwas größer erscheint, empfinde ich Sming als ausgereifter

Bapt. Reverend Magersuppe

Hi,

das macht ja einen sehr guten Eindruck. Je näher man an der Hardware arbeitet, desto rock-stabler wird die ganze Sache.

Jetzt habe ich anhand der Anleitung versucht, das ganze Paket zu installieren. Leider wird (mindestens) Eclipse nicht installiert und ich habe keinen Schimmer wodran das liegt. Wo kann ich suchen?
--
If I was born in 1453, Leonardo da Vinci would be jealous of me.
Reverend Paul Egon Magersuppe
Aus versicherungstechnischen Gründen sind sämtliche Beiträge von mir rein spekulativer und theoretischer Natur und sollten nicht in die Tat umgesetzt werden!
Bin hier selten DRIN. AUS GRÜNDEN!

Pf@nne

Moin,

geh mal auf die s6z.de Links im ersten Beitrag. Da sind die original Links drinn.
FHEM auf: DS415+ (Master), Raspberry Pi 2

Bapt. Reverend Magersuppe

Ich habe das mal anhand der englischen Originalanleitung gemacht, das hat auch nichts genützt. Ich blicke da nicht so durch warum der das Eclipse weg lässt. Alles andere scheint ja durchzulaufen. Ich konnte auch noch kein Logfile finden was mir da weiterhilft.

Werde mir mal eine virtuelle Linuxmaschine hochziehen und es da probieren, elendes Windos.


--
If I was born in 1453, Leonardo da Vinci would be jealous of me.
Reverend Paul Egon Magersuppe
Aus versicherungstechnischen Gründen sind sämtliche Beiträge von mir rein spekulativer und theoretischer Natur und sollten nicht in die Tat umgesetzt werden!
Bin hier selten DRIN. AUS GRÜNDEN!

Pf@nne

Hmm... lief bei mir eigentlich so durch....
Eclipse kannst du doch aber auch von Hand nachinstallieren....

Zitat von: Bapt. Reverend Magersuppe am 04 April 2016, 11:08:00
Ich blicke da nicht so durch....

da sind wir schon zu zweit......  ;D
Ist teilweise noch alles ein wenig tricky, geht mir auch so.
Sollte aber mit der Zeit besser werden.
Ich bin mir auch noch nicht ganz schlüssig, ob ich mein nächstes Projekt oder z.B. das ESP8266_Basic-Template auf Sming umstelle.

Sinn macht es schon, wird natürlich für alle "nichtsminger" schwieriger, da es nicht zu Arduino kompatibel ist.
FHEM auf: DS415+ (Master), Raspberry Pi 2

Rince

Dann gebe ich als Noob auch meinen Senft dazu:
Die Arduino IDE hat den großen Vorteil, viele Codebeispiele zu haben. Immerhin wird der Arduino grade 12 Jahre alt. Das Konzept der IDE ist recht einfach. Code schreiben (oder Copy & Pasten), Board aussuchen, Upload drücken, warten.

Dazu gibt es für viele Hardware Libraries.


Großer Nachteil für Sming:
Programme nicht kompatibel (Loop vs. Events)

Wobei der klassische fhem User was mit Events anfangen kann.


Letztlich gibt es also zwei essentielle Fragen:
1. Wird meine Hardware von Sming unterstützt (=sind die Libraries kompatibel)
2. Gibt es eine Community, die durch Support das fehlen von vielen Codebeispielen auszugleichen bereit ist?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Pf@nne

Zitat von: Rince am 04 April 2016, 18:35:52
Letztlich gibt es also zwei essentielle Fragen:
1. Wird meine Hardware von Sming unterstützt (=sind die Libraries kompatibel)
2. Gibt es eine Community, die durch Support das fehlen von vielen Codebeispielen auszugleichen bereit ist?

Sehe ich auch so, für den kleinen Sketch zwischendurch wird es wohl eher Arduino bleiben.
Für komplexere Sachen mit vielen Klassen und Files sehe ich Eclipse und Sming im Vorteil.
Die meisten Librarys sollten mit vertretbarem Aufwand nutzbar gemacht werden können, wenn diese nicht sogar gleich ohne Änderung laufen.

Ich habe mich mal bei Patrick und seinem RGB-LED-Modul eingeklinkt und "versuche" ihn bei der MQTT-Anbindung zu unterstützen.
In der Praxis muss ich aber noch viel über die Feinheiten der C-Programmierung lernen, gerade was Klassen und Objekte angeht.
Patrick ist hier sehr geduldig......

Mal sehen was mein Eindruck von Sming dann sagt..... :-)
FHEM auf: DS415+ (Master), Raspberry Pi 2

Bapt. Reverend Magersuppe

Ich sehe das recht pragmatisch. Ich suche eine Plattform die möglichst stabilen Output erzeugt. Arduino ist da schon ganz ok, stürzt aber leider mal ab. Sming-basierte Projekte tun das vielleicht auch. Ausprobieren.

Der Umfang der Programme ist dabei ja durchaus überschaubar (jedenfalls bei meinen Ansprüchen).

Ein Schalter/Taster der per MQTT seinen Zustand meldet und was schaltet und weil noch GPIOs frei sind, machen wir gleich noch einen DHT oder DS18B20 mit dazu. Die Meßwerte sollten natürlich auch per MQTT abgesetzt werden.
Wenn man den Taster drückt sollte das Licht sofort angehen, egal ob der MQTT-Server oder FHEM in dem Moment noch da sind oder nicht. DA freut sich die Frau! (Schatz, lass den Schalter!!! Nimm die App!)

Und in Abwandlung eines legendären Zitats braucht sowas eigentlich nur: Stability, Stability, Stability.

So, aber erstmal muss ich das Eclipse zum Laufen bringen.
--
If I was born in 1453, Leonardo da Vinci would be jealous of me.
Reverend Paul Egon Magersuppe
Aus versicherungstechnischen Gründen sind sämtliche Beiträge von mir rein spekulativer und theoretischer Natur und sollten nicht in die Tat umgesetzt werden!
Bin hier selten DRIN. AUS GRÜNDEN!

mrpj

Zitat von: Rince am 04 April 2016, 18:35:52
Dann gebe ich als Noob auch meinen Senft dazu:
Die Arduino IDE hat den großen Vorteil, viele Codebeispiele zu haben. Immerhin wird der Arduino grade 12 Jahre alt. Das Konzept der IDE ist recht einfach. Code schreiben (oder Copy & Pasten), Board aussuchen, Upload drücken, warten.

Der Arduino IDE hat seine Berechtigung und ist für Einsteiger eine ganz nette Sache. Aber sobald man etwas mehr als nur ein simples Programm schreibt, dass nur einen geringen Funktionsumfang hat, schränkt der IDE massivst ein. Code Lookups und Dokumentation (die allgemein bei Arduino zu wünschen übrig lässt...  ::) ) is spärlich vorhanden. Es gibt keine vernünftige Übersicht zu definierten Variablen, Funktionen und Klassen.

Die Liste kann ich hier mit vielen weiteren Punkten füllen - ich bleibe bei der Aussage, der Arduino IDE ist für den ersten Einstieg in die Programmierung von MCs sehr hilfreich. Die Grenzen des IDEs sind meiner Meinung nach sehr schnell erreicht, wenn man sich intensiver mit der Materie auseinander setzt. (Aber selbst wenn die Grenzen erreicht sind, verharren viele Nutzer zu lange bei dem Arduino IDE, statt den Schritt weiter zu gehen und andere IDEs auszuprobieren. Der Mensch ist ein Gewohnheitstier und gewöhnt sich auch daran mit einem eingeschränkt Funktionsumfang zu arbeiten.)



Zitat von: Rince am 04 April 2016, 18:35:52
Großer Nachteil für Sming:
Programme nicht kompatibel (Loop vs. Events)

Wobei der klassische fhem User was mit Events anfangen kann.

Das stimmt so nicht - es ist ganz einfach sich einen "loop" zu erzeugen, in dem man einen Timer startet, der z.B. alle X ms eine Funktion aufruft in der die loop Handler von Arduino Bibliotheken/Programmen abgehandelt werden.

Es ist nur nicht immer sinnvoll - es macht keinen Sinn den Arduino Webserver zu nutzen, wenn es einen Ereignisbasierten Webserver gibt ...

Zitat von: Rince am 04 April 2016, 18:35:52
Letztlich gibt es also zwei essentielle Fragen:
1. Wird meine Hardware von Sming unterstützt (=sind die Libraries kompatibel)

Die gängigsten Libraries sind portiert worden - auch teilweise Libraries die nicht gescheit mit ArduinoESP funktioniert haben.
Sicherlich ist es sinnvoller, die Bibliotheken anzupassen um die Vorteile/Eigenheiten von SMING zu nutzen

Zitat von: Rince am 04 April 2016, 18:35:52
2. Gibt es eine Community, die durch Support das fehlen von vielen Codebeispielen auszugleichen bereit ist?
Im offiziellen Repository sind 55 Beispiele zu dem Framework vorhanden - welche einen großteil der Verwendungszenarien gut abdeckt
https://github.com/SmingHub/Sming/tree/develop/samples

Die Frage ist doch andersrum, ob es nötigt ist eine Vielzahl von redudanter Beispiele zu haben, deren Qualität oft zu wünschen übrig lässt. Hinzukommt das in der großen Menge an Arduino Code Beispielen immer wieder kopierte Codeschnipsel auftauchen, die an sich eine ziemlich dürftige und fehlerbehaftet Umsetzung darstellen.

Zitat von: Bapt. Reverend Magersuppe am 04 April 2016, 20:37:29
Ich sehe das recht pragmatisch. Ich suche eine Plattform die möglichst stabilen Output erzeugt. Arduino ist da schon ganz ok, stürzt aber leider mal ab. Sming-basierte Projekte tun das vielleicht auch. Ausprobieren.

Ich kann hier aus eigner Erfahrung berichten: Über die Entwicklung des RGBWW Projekts war der Arduino ESP SDK wesentlich instabiler und ist mir ziemlich oft abgestürzt (WDT resets die vom SDK ausgelöst wurden und nichts mit meinem eigenen Code zu tun hatten).
Seit über einem Monat laufen alle meine RGBWW Controller auf Sming Code - Abstürze hatte ich keine (außer ich hab Code und Funktionalitäten getestet - aber im "Alltagsgebrauch" nicht).

Aber sicherlich gibt es auch Komponenten bei SMING die öfters Abstürzen würden als andere


Zitat von: Bapt. Reverend Magersuppe am 04 April 2016, 20:37:29
Und in Abwandlung eines legendären Zitats braucht sowas eigentlich nur: Stability, Stability, Stability.

Dafür ist doch der Thread wunderbar geeignet - ausprobierne und Erfahrungen austauschen


HCS

Zitat von: mrpj am 05 April 2016, 01:34:06
Der Arduino IDE hat seine Berechtigung und ist für Einsteiger eine ganz nette Sache. Aber sobald man etwas mehr als nur ein simples Programm schreibt, dass nur einen geringen Funktionsumfang hat, schränkt der IDE massivst ein. Code Lookups und Dokumentation (die allgemein bei Arduino zu wünschen übrig lässt...  ::) ) is spärlich vorhanden. Es gibt keine vernünftige Übersicht zu definierten Variablen, Funktionen und Klassen.

Die Liste kann ich hier mit vielen weiteren Punkten füllen - ich bleibe bei der Aussage, der Arduino IDE ist für den ersten Einstieg in die Programmierung von MCs sehr hilfreich. Die Grenzen des IDEs sind meiner Meinung nach sehr schnell erreicht, wenn man sich intensiver mit der Materie auseinander setzt. (Aber selbst wenn die Grenzen erreicht sind, verharren viele Nutzer zu lange bei dem Arduino IDE, statt den Schritt weiter zu gehen und andere IDEs auszuprobieren.

Das sehe ich ganz genauso. Die Arduino IDE ist ein besseres NotePad.
Ich verwende schon seit langer Zeit sehr zufrieden das hier: http://www.visualmicro.com/

Damit mache ich u.A den LaCrosse Arduino sketch und das LaCrosseGateway und das ist ein wirklich großes Projekt.

Vorteil, man hat alles, was die Arduino IDE hat, aber in einer vernünftigen Umgebung, mit class explorer, intellisense,  code completion, ...
Und ein build ist (wenn es nicht gerade ein rebuild ist) um Kategorien schneller, weil nur die geänderten Files neu gebildet werde nun nicht wie bei der Arduino IDE generell ein rebuild gemacht wird.

IDEs sind natürlich Geschmacksache, aber wem ein Projekt in der Arduino IDE über den Kopf wächst, der kann sich das mal anschauen.
Und: nein, ich bin mit dem Hersteller weder Verwandt noch ... und auch nicht am Umsatz beteiligt.  :)

Pf@nne

Moin HCS,

sieht auch sehr schön aus! Wie anfängerfreundlich sind die IDE und der Compiler denn zu installieren?
Bei Eclipse und Simg sind das schon einige Arbeitsschritte.

Gruß
Pf@nne
FHEM auf: DS415+ (Master), Raspberry Pi 2

HCS

Zitat von: Pf@nne am 13 April 2016, 20:56:48
sieht auch sehr schön aus! Wie anfängerfreundlich sind die IDE und der Compiler denn zu installieren?
Hmmm, anfängerfreundlich ist natürlich relativ.
Aber es ist eigentlich recht einfach. Man braucht die Arduino IDE als basis, da deren Compiler verwendet wird.
Visual Studio ist ein ganz normales Setup, die VisualMicro Extension kann einfach im Visual Studio als Extension ausgewählt und installiert werden und dann muss man noch den Pfad zur Arduino IDE konfigurieren und das war es dann.

Aber wenn man mit diesen Werkzeugen (besonders Visual Studio) noch nie gearbeitet hat, muss man sich da natürlich wie bei Allem einarbeiten ...