Skip to content

Commit 448b779

Browse files
committed
2 parents 4c40e1d + ef103d8 commit 448b779

17 files changed

+647
-321
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ require (
66
github.com/abbot/go-http-auth v0.4.0
77
github.com/cpucycle/astrotime v0.0.0-20120927164819-9c7d514efdb5
88
github.com/gorilla/schema v1.1.0
9-
github.com/nathan-osman/go-rpigpio v0.0.0-20160701025123-bce6190607da
109
github.com/sirupsen/logrus v1.4.2
1110
github.com/spf13/cobra v0.0.5
1211
github.com/spf13/viper v1.6.2
12+
github.com/stianeikeland/go-rpio/v4 v4.5.1
1313
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
1414
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
1515
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,6 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk
7676
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
7777
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
7878
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
79-
github.com/nathan-osman/go-rpigpio v0.0.0-20160701025123-bce6190607da h1:4fuSzRW9Os4EsqurEJtUADEZBAhYBQGDwMYEpm0tY70=
80-
github.com/nathan-osman/go-rpigpio v0.0.0-20160701025123-bce6190607da/go.mod h1:d9P2zqmuOhe7dbKtAOfSXL4vIB9BAjFj/+/vMULsVfE=
8179
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
8280
github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
8381
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
@@ -117,6 +115,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn
117115
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
118116
github.com/spf13/viper v1.6.2 h1:7aKfF+e8/k68gda3LOjo5RxiUqddoFxVq4BKBPrxk5E=
119117
github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k=
118+
github.com/stianeikeland/go-rpio/v4 v4.5.1 h1:sLzl5w1HS+4726C5kfvpIgjXULrLCCM82vDpAFefGQI=
119+
github.com/stianeikeland/go-rpio/v4 v4.5.1/go.mod h1:A3GvHxC1Om5zaId+HqB3HKqx4K/AqeckxB7qRjxMK7o=
120120
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
121121
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
122122
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=

internal/main.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,20 @@ import (
66
"io/ioutil"
77
"net/http"
88

9-
auth "github.com/abbot/go-http-auth"
109
"github.com/fallais/gocoop/internal/routes"
1110
"github.com/fallais/gocoop/internal/services"
1211
"github.com/fallais/gocoop/internal/system"
1312
"github.com/fallais/gocoop/pkg/coop"
1413
"github.com/fallais/gocoop/pkg/door"
15-
"golang.org/x/crypto/bcrypt"
14+
"github.com/fallais/gocoop/pkg/motor"
15+
"github.com/fallais/gocoop/pkg/motor/bts7960"
16+
"github.com/fallais/gocoop/pkg/motor/l293d"
1617

18+
auth "github.com/abbot/go-http-auth"
1719
"github.com/sirupsen/logrus"
1820
"github.com/spf13/cobra"
1921
"github.com/spf13/viper"
22+
"golang.org/x/crypto/bcrypt"
2023
)
2124

2225
// StaticFS is the embed for the static files.
@@ -43,13 +46,22 @@ func Run(cmd *cobra.Command, args []string) {
4346
logrus.WithError(err).Fatalln("Error when reading configuration data")
4447
}
4548

46-
// Door
49+
// Motor
50+
var motor motor.Motor
4751
logrus.WithFields(logrus.Fields{
48-
"pin_1A": viper.GetString("door.pin_1A"),
49-
"pin_1B": viper.GetString("door.pin_1B"),
50-
"pin_enable1": viper.GetString("door.pin_enable1"),
51-
}).Infoln("Creating the door")
52-
d := door.NewDoor(viper.GetInt("door.pin_1A"), viper.GetInt("door.pin_1B"), viper.GetInt("door.pin_enable1"), viper.GetDuration("door.opening_duration"), viper.GetDuration("door.closing_duration"))
52+
"type": viper.GetString("door.motor.type"),
53+
}).Infoln("Creating the motor")
54+
switch viper.GetString("door.motor.type") {
55+
case "l293d":
56+
motor = l293d.NewL293D(viper.GetInt("door.motor.pin_1A"), viper.GetInt("door.motor.pin_1B"), viper.GetInt("door.motor.pin_enable1"))
57+
case "bts7960":
58+
motor = bts7960.NewBTS7960(viper.GetInt("door.motor.forward_PWM"), viper.GetInt("door.motor.backward_PWM"), viper.GetInt("door.motor.forward_enable"), viper.GetInt("door.motor.backward_enable"))
59+
}
60+
logrus.Infoln("Successfully created the motor")
61+
62+
// Door
63+
logrus.Infoln("Creating the door")
64+
d := door.NewDoor(motor, viper.GetDuration("door.opening_duration"), viper.GetDuration("door.closing_duration"))
5365
logrus.Infoln("Successfully created the door")
5466

5567
// Notifiers

pkg/door/door.go

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,82 @@
11
package door
22

3-
// Door operation contract.
4-
type Door interface {
5-
Open() error
6-
Close() error
7-
Stop() error
3+
import (
4+
"context"
5+
"time"
6+
7+
"github.com/fallais/gocoop/pkg/motor"
8+
9+
"github.com/sirupsen/logrus"
10+
)
11+
12+
//------------------------------------------------------------------------------
13+
// Structure
14+
//------------------------------------------------------------------------------
15+
16+
// Door is a physical door manipulated with a motor.
17+
type door struct {
18+
motor motor.Motor
19+
openingDuration time.Duration
20+
closingDuration time.Duration
21+
}
22+
23+
//------------------------------------------------------------------------------
24+
// Factory
25+
//------------------------------------------------------------------------------
26+
27+
// NewDoor returns a new Door.
28+
func NewDoor(motor motor.Motor, openingDuration, closingDuration time.Duration) Door {
29+
return &door{
30+
motor: motor,
31+
openingDuration: openingDuration,
32+
closingDuration: closingDuration,
33+
}
34+
}
35+
36+
//------------------------------------------------------------------------------
37+
// Functions
38+
//------------------------------------------------------------------------------
39+
40+
// Open the door
41+
func (d *door) Open() error {
42+
logrus.Infoln("Opening the door")
43+
44+
// Create context
45+
ctx, cancel := context.WithTimeout(context.Background(), d.openingDuration)
46+
defer cancel()
47+
48+
// Run the motor in forward
49+
d.motor.Forward(ctx)
50+
51+
logrus.Infoln("Door has been opened")
52+
53+
return nil
54+
}
55+
56+
// Close the door
57+
func (d *door) Close() error {
58+
logrus.Infoln("Closing the door")
59+
60+
// Create context
61+
ctx, cancel := context.WithTimeout(context.Background(), d.closingDuration)
62+
defer cancel()
63+
64+
// Run the motor in backward
65+
d.motor.Backward(ctx)
66+
67+
logrus.Infoln("Door has been closed")
68+
69+
return nil
70+
}
71+
72+
// Stop the door
73+
func (d *door) Stop() error {
74+
logrus.Infoln("Stopping the door")
75+
76+
// Stop the motor
77+
d.motor.Stop()
78+
79+
logrus.Infoln("Door has been stopped")
80+
81+
return nil
882
}

pkg/door/door_darwin.go

Lines changed: 0 additions & 48 deletions
This file was deleted.

0 commit comments

Comments
 (0)