Home Domotica V2

Door Toppe op dinsdag 14 april 2015 08:19 - Reacties (20)
Categorie: -, Views: 5.053

Deze is na aanleiding van deze

Je krijgt toch leuke reacties, ook via de email 8)7 het leek me daarom leuk om iets "dieper" in te gaan in wat ik nou momenteel heb draaien.

Hardware
Momenteel draait mijn software op 1 "hub" en 2 "nodes". Feitelijk word alles aangestuurd door de hub alleen soms is het makkelijker om alle sensoren in bijvoorbeeld slaapkamer aan te sluiten op een andere Pi, daar zijn de 2 nodes dus voor. Pi nummer 4 komt er aan.

De hub:
Raspberry Pi 2
32GB Micro SD class 10
5V 2A Adapter
Ethernet

De nodes:
1x Rasberry Pi B+
1x Raspberry Pi 2
32GB Micro SD class 10
5v 1.2A Adapter (Ja, de Pi 2 heeft eigelijk 2A nodig)
TP-Link WiFi

De sensoren
Momenteel heb ik onderstaande sensoren:
4x DHT22 Temperatuur sensor
2x DS18B20 Temperatuur sensor
1x 433MHz zender
2x Bewegingsmelder
2x Deurcontact
Te veel klik aan klik uit modules

Is opzich niet heel veel, maar ik de loop van de tijd word dit steeds groter.

Toekomst
Momenteel is mijn favoriete collega (tja, moet hem wel te vriend houden, geen idee of hij het leest :Y) ) bezig met het werkend krijgen van een Arduino Nano ICM WiFi. Idee hiervan is dat we de meeste sensoren op afstand kunnen gaan uitlezen. Ja, een klant en klaar pakket werkt waarschijnlijk sneller maar is lang niet zo leuk. Communicatie via 433MHz hebben we ook naar gekeken maar hiervan is het nadeel dat het bereik vaak niet voldoende is.

Ja, dit probleem heb je ook via de WiFi maar wij gaan er vanuit: Geen bereik is toch een repeater :9

Software
http://static.tweakers.net/ext/f/pcpHzO7CegGnC6hsYbKci7Bv/full.png
Dit script is speciaal voor de bewegingssensoren. Deze is gekoppeld met een LDR dus schakelt alleen als het donker genoeg is. Ja, hier zitten nog wat kleine haken en ogen: LDR reageert direct, dus ook als de sensor maar tijdelijk (zeg, 1 seconde) word "geblindeerd"

http://static.tweakers.net/ext/f/yyfopL6Ya4zTy5qIaWpr7vFO/full.png
Ik kreeg vorige week de magneet contacten binnen en moest ze natuurlijk even testen. Dus dan maar op de koelkast. Overigens wel leuk want ik heb altijd een discussie dat ik teveel melk drink, nu kan ze zien dat dit niet het geval is

http://static.tweakers.net/ext/f/NhO8e59CnqmgBN7VenIjtM6v/full.png
Live een overzicht van de sensoren, reageert binnen 2 seconde. Uitgebreid getest :*)

http://static.tweakers.net/ext/f/z2vSi9Rf7VoofkIJd7Y4FUU6/full.png
Deze had ik ook in de vorige gepost echter zie je nu ook even een notificatie :9~

http://static.tweakers.net/ext/f/bsxvW3579RIdEE70CiJ4izQz/full.png
Grafiek van de temperatuur in de slaapkamer

http://static.tweakers.net/ext/f/gG8BYSZgZo5Y6cXTizHMFvZU/full.png
Overzicht van alle temperaturen, hier zitten nog wat kleine foutjes

"Admin"
Ik zal geen screenshots posten van het beheerderspaneel, t werkt en ziet er toonbaar uit maar vraag me af of iemand er op zit te wachten.

Waar ik wel tegen aanliep was de uitbreidbaarheid van het systeem, ik wil snel nieuwe "modules" kunnen toevoegen zonder de halve code te hoeven ombouwen, daarom heb ik afgelopen dagen het hele systeem omgebouwd naar JSON data voor de configuratie

Hoe ziet dat er dan uit? Nou zo:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
    "devices": {
        "Sidetable": "on",
        "LED Strip": "on",
        "Hektar": "off",
        "LED Strip TV": "on",
        "Plafond eetkamer": "off",
        "Plafond woonkamer": "off",
        "Voordeur": "on",
        "Toilet": "on"
    },
    "temperature": {
        "lower_than": "21",
        "set_temp": "21"
    },
    "notification": {
        "send": "yes",
        "user trigger": "yes",
        "message": "Welkom thuis!"
    },
    "delay": {
        "Gang uit": "2"
    },
    "timer": {
        "disable_start": "07:45",
        "disable_end": "08:00"
    }
}


Als jullie uitleg nodig hebben, dan hoor ik het wel. Ook hier zullen ongetwijfeld nog kleine foutjes zitten maar die los ik wel weer op.

Notifications & GEO Fence
2 punten die voor mij toch wel "essentieel" waren maar die ik op geen enkele goede manier kon triggeren, na wat zoek werk kwam ik voor de notificaties uit bij Pushover. 7 dagen trial en daarna 1 malig §5 voor 7500 berichten per maand. Vind ik zeker fair. Trial is bijna afgelopen en dan maar "kopen"

Ik zou graag een "slim" systeem maken, geen devices thuis? Okť, schakel dan alles maar zoals ik ingesteld heb (bovenstaande code is als ik thuis kom).

Nu heb ik dit geprobeerd aan de hand van WiFi, naast dat het met iOS in elk geval niet lekker werkt (na een x periode kan hij je device niet meer "pingen") schuilt er ook nog een ander gevaar: wat als je WiFi en/of bluetooth uit hebt staan? Juist. dan gebeurt er niets.

Wat je niet zomaar kan en zal uitzetten is je GPS. Via een website kwam ik uit op de "Find my friends" versie. Deze kan een mail sturen zodra je een bepaald gebied binnen komt of juist verlaat.

En zoals alles bij mij, het werkt niet |:( althans, alleen als ik even m'n scherm "unlock" en een willekeurige app open die GPS gebruikt zoals Facebook.

Toen gekeken naar IFTTT.com en dan het zelfde idee maken, stuur een mailtje als ik een gebied binnen kom of verlaat. Opzich werkte het wel maar heb het er heeeeeel snel weer afgegooid, iets van 7 mailtjes binnen een uur.. Daag!

Wat ik eigelijk wou, een app die een website kan openen als ik het bekende gebied verlaat of juist betreedt. Nergens te vinden. Uiteindelijk kwam ik er 1 tegen die precies deed wat ik wou echt per toeval. Genaamd Geofancy. Deze app opent een GET of POST website op t moment dat je weg gaat of thuis komt.

Ondertussen een aantal dagen in gebruik en werkt lekker, alleen bij m'n vriendin hapert hij nog wel eens met thuis komen maar dat zal aan haar liggen, de website word in elk geval niet geopend want anders krijg ik wel weer een notificatie.

Overigens, ja, het systeem kijkt naar hoeveel apparaten er nog thuis zijn voordat de actie daadwerkelijk gestart word. Als ik dus nog lig te slapen _/-\o_ en m'n vriendin naar haar werk gaat blijft de verwarming nog lekker aan staan, pas als ik weg ga zal hij automatisch uitschakelen.

Wie wil er een deel 3 en wat wil je er in zien?

Voor de Python developers onder ons, iemand enig idee voor dit probleem?

Wil jij mijn systeem testen? RaspiHome opensource?

Volgende: RaspiHome 04-'15 RaspiHome
Volgende: Home Domotica 04-'15 Home Domotica

Reacties


Door Tweakers user himlims_, dinsdag 14 april 2015 09:13

nodes:
1x Rasberry Pi B+
1x Raspberry Pi 2
32GB Micro SD class 10
5v 1.2A Adapter (Ja, de Pi 2 heeft eigelijk 2A nodig)
TP-Link WiFi

dat is nog eens een 'overkill' voor nodes :+

Door Tweakers user Toppe, dinsdag 14 april 2015 09:14

himlims_ schreef op dinsdag 14 april 2015 @ 09:13:
nodes:
1x Rasberry Pi B+
1x Raspberry Pi 2
32GB Micro SD class 10
5v 1.2A Adapter (Ja, de Pi 2 heeft eigelijk 2A nodig)
TP-Link WiFi

dat is nog eens een 'overkill' voor nodes :+
Klopt. Ik had 2x een B (ook nog eens overkill) maar die gingen kapot... Dus toen kreeg ik een vervangend model van de winkel:)

Voor de geÔnteresseerde, ik zit er over te denken om de software open source te maken: RaspiHome opensource?

Door Tweakers user RoadRunner84, dinsdag 14 april 2015 09:14

Voor de Python developers onder ons, iemand enig idee voor dit probleem?
Even geheel los van Python, je gedrag moet anders. Momenteel is het gedrag "WHEN motion, start timer, stop this WHEN. WHEN timer expires AND motion, DO action, stop timer, start first WHEN."
Het zou moeten zijn "WHEN motion, start or reset timer. WHEN timer expires, DO action"

Het gedrag moet dus een "watchdog" zijn, terwijl jij een timed poll gemaakt hebt.

Edit:
Ik heb even je code gelezen, maar ik vat het niet helemaal, heb je nou een timeout geimplementeerd met een RC netwerk? Je weet dat Python mooie timer functies heeft he?

[Reactie gewijzigd op dinsdag 14 april 2015 09:16]


Door Tweakers user Toppe, dinsdag 14 april 2015 09:16

RoadRunner84 schreef op dinsdag 14 april 2015 @ 09:14:
[...]

Even geheel los van Python, je gedrag moet anders. Momenteel is het gedrag "WHEN motion, start timer, stop this WHEN. WHEN timer expires AND motion, DO action, stop timer, start first WHEN."
Het zou moeten zijn "WHEN motion, start or reset timer. WHEN timer expires, DO action"

Het gedrag moet dus een "watchdog" zijn, terwijl jij een timed poll gemaakt hebt.

Edit:
Ik heb even je code gelezen, maar ik vat het niet helemaal, heb je nou een timeout geimplementeerd met een RC netwerk? Je weet dat Python mooie timer functies heeft he?
RoadRunner84, ik heb echt GEEEEEEEEN kaas gegeten van Python, dus, ja het zal absoluut verkeerd zijn. Ik doe dit alles als hobby en heb vrijwel geen kaas gegeten van programmeren als ik me moet 'vergelijken met de professionals'... :'( zie: RaspiHome opensource?

[Reactie gewijzigd op dinsdag 14 april 2015 09:18]


Door Tweakers user RoadRunner84, dinsdag 14 april 2015 09:21

Begin eens met duidelijk te beschrijven WAT je wilt doen, let er vooral op dat je geen woorden gebruikt die ook maar ruiken naar een oplossing. Daarna kan je zoeken naar de beste oplossing hiervoor.
Python is een hele fijne taal, het doet eigenlijk altijd precies wat je wilt. Je zult echter zoals bij iedere taal wel het "vocabulaire" (de ingebouwde functies) moeten leren kennen.

Door Tweakers user Toppe, dinsdag 14 april 2015 09:25

Begrijp me niet verkeerd (ben blij met je commentaar) maar momenteel doe ik veel talen door elkaar heen schrijven:

PHP
Python
C
LUA
Javascript/jQuery

De eerste en de laatste ken ik een beetje, de rest totaal niet. Hierdoor loop ik gewoon ontzettend spaak op hetgeen wat ik wilt doen.

Het opensource maken van m'n broncode is een grote 'wens' omdat ik nu vragen krijg of het ooit op de markt gaat komen, simpel weg omdat je eigelijk geen kennis nodig hebt om dit te installeren. De enigste reden waarom dit nu nog niet is komt dat het gewoon niet professioneel genoeg is. Elke hulp is welkom!

Door Tweakers user RoadRunner84, dinsdag 14 april 2015 09:38

Wat dacht je van zoiets:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import sched, time

tick = 1 # system tick is 1 second
delay = 5 * 60 # activity timeout is 5 minutes

def activity(busy):
  if busy:
    pass # do something interesting here
  else:
    pass # do something less interesting here

def tickHandle:
  pass

s = sched.scheduler(time.time, time.sleep)
event = None
while True:
  if pir:
    try:
      s.cancel(event)
      event = s.enter(time.time + delay, activity, arguments=(False))
      activity(True)
    except ValueError:
      pass
  s.enter(time.time + tick, tickHandle)
  s.run(False)


zoals je ziet heb ik alle interfacing weggelaten; pir, delay and "something interesting" moet je dus zelf nog invullen.

by the way: ik ben zelf alles behalve een Python expert, maar dat is ook helemaal niet nodig om een goed Python programma te bouwen.

[Reactie gewijzigd op dinsdag 14 april 2015 09:40]


Door Tweakers user Toppe, dinsdag 14 april 2015 09:44

Thanks!

Ik ga hier eens goed naar kijken. Al is het nog steeds adacadabra |:( :?


code:
1
2
3
4
5
def activity(busy):
  if busy:
    pass # Hier opent hij dus de link naar het starten van de scene?
  else:
    pass # Hier sluit hij hem dus?




Als ik het goed begrijp?

Door Tweakers user RoadRunner84, dinsdag 14 april 2015 09:48

Ik vindt "openen van een link" klinken als een oplossing, niet een beschrijving van een probleem.
Ik verwacht op die plek iets als
RaspiHome.scene("Thuis")
en twee regels erna
RaspiHome.scene("Leeg")
Al zou je die woorden ook door iets uit een database kunnen vervangen. Je kan natuurlijk dit geheel weer in een object vatten:
RaspiHome.watchdog(pir, "Thuis", "Leeg", 5 * 60)
ofzoiets.
Het uitvoeren of laden van een scene hoort op een andere plen thuis (in het RaspiHome object)

Door Tweakers user Toppe, dinsdag 14 april 2015 09:51

Denk dat het maar beter is als ik even niets zeg |:( :/ :| :/ |:(

Voelt zich echt nu heel dom

[Reactie gewijzigd op dinsdag 14 april 2015 09:52]


Door Tweakers user RogerDad, woensdag 15 april 2015 11:37

Leuk artikel! Het is vooral geinig om te zien hoe iedereen bezig is met domotica en zijn eigen oplossingen bouwt.

Je zou voor de lossen sensors met Wifi ook kunnen kijken naar die ESP8266 modules, die zijn erg goedkoop, hebben Wifi ingebouwd, verbruiken weinig stroom (als je ze tussendoor in hibernate zet), klein, enz.

Als je een gratis vervanger van Pushover wilt zou je kunnen kijken naar het versturen van berichten via Telegram, dat is gratis en werkt goed om mijn RasPi. Daarmee zou je zelfs de mogelijkheid van 2-weg communicatie in kunnen bouwen. En met Telegram kan je bv. ook foto's sturen (doe ik bv. als mijn keukendeur open gaat :-D )

Door Tweakers user Toppe, woensdag 15 april 2015 12:25

RogerDad schreef op woensdag 15 april 2015 @ 11:37:
Leuk artikel! Het is vooral geinig om te zien hoe iedereen bezig is met domotica en zijn eigen oplossingen bouwt.

Je zou voor de lossen sensors met Wifi ook kunnen kijken naar die ESP8266 modules, die zijn erg goedkoop, hebben Wifi ingebouwd, verbruiken weinig stroom (als je ze tussendoor in hibernate zet), klein, enz.

Als je een gratis vervanger van Pushover wilt zou je kunnen kijken naar het versturen van berichten via Telegram, dat is gratis en werkt goed om mijn RasPi. Daarmee zou je zelfs de mogelijkheid van 2-weg communicatie in kunnen bouwen. En met Telegram kan je bv. ook foto's sturen (doe ik bv. als mijn keukendeur open gaat :-D )
Deze modules hebben we inderdaad liggen maar m'n collega schiet niet echt op |:(

Door Tweakers user Slechdt, woensdag 15 april 2015 13:41

Ziet er cool uit. Met al deze teksten op het blog en tweakers.net gaat het ook maar eens tijd worden om hier aan te beginnen. Onlangs een RBP aangeschaft en zie dus dat deze als aanstuurpunt kan worden ingesteld :-) erg cool!

Wat vooral voor mij als iemand die net wilt beginnen een punt is dat er een gigantisch aanbod is, maar niet zeker is wat nou goede spullen zijn!

Door Tweakers user himlims_, woensdag 15 april 2015 13:45

Toppe schreef op dinsdag 14 april 2015 @ 09:14:
[...]


Klopt. Ik had 2x een B (ook nog eens overkill) maar die gingen kapot... Dus toen kreeg ik een vervangend model van de winkel:)

Voor de geÔnteresseerde, ik zit er over te denken om de software open source te maken: RaspiHome opensource?
nog steeds dikke overkill, ik kom met mijn nodes niet boven de 5euro uit. en nodes heb je stiekem best snel veel

Door Tweakers user Toppe, woensdag 15 april 2015 13:46

Ben benieuwd wat voor nodes jij dan hebt qua hardware _/-\o_ 8)7

Door Tweakers user XzeroD, donderdag 16 april 2015 16:12

Ziet er interessant uit! Keep it up!

Door Tweakers user durkp, maandag 20 april 2015 14:39

Meh, staat in een afgesloten forum.
Is er een manier om toch te testen?

Wil namelijk binnenkort ook gaan beginnen met home automation

Door Tweakers user Toppe, maandag 20 april 2015 14:41

Durkp, geen zorgen, topic is zelfs helemaal afgesloten :)

Aankomende dagen wil ik kijken of ik iets van een simpele WP kan openen :9

Door Tweakers user heintjeput, donderdag 23 april 2015 20:39

Ik weet niet of iOS je hoofd mobiele systeem is, maar Geofencing met Android kan met Tasker of Llama. Er is voor zo ver ik weer geen goed iOS alternatief.

Door Tweakers user Toppe, donderdag 23 april 2015 20:39

GEOFancy in de app store doet precies wat ik wil, kwam er puur bij toeval achter... 8)7

Reageren is niet meer mogelijk